OpenCV亚像素角点检测
生活随笔
收集整理的這篇文章主要介紹了
OpenCV亚像素角点检测
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前言
我在做圍棋盤(pán)的的四個(gè)角點(diǎn)檢測(cè)時(shí),試了幾種角點(diǎn)檢測(cè),用來(lái)得到棋盤(pán)四個(gè)角的初始點(diǎn),試了幾種角點(diǎn)檢測(cè)的方法,但在我所使用的環(huán)境下,亞像素的角點(diǎn)檢測(cè)得到的結(jié)果比較理想。
代碼
//亞像素角點(diǎn)檢測(cè) void cornerDetectorPixel(Mat &src, Mat &dst) {Mat src_img, gray;//讀取圖像src_img = src.clone();//把原圖像轉(zhuǎn)換成灰度圖cvtColor(src_img, gray, COLOR_BGR2GRAY);vector<Point2f> corners;dst = src_img.clone();//進(jìn)行角點(diǎn)檢測(cè)goodFeaturesToTrack(gray, corners, 4, 0.01, 10, Mat(), 3, false, 0.04);//輸出檢測(cè)到的角點(diǎn)的數(shù)量cout << "輸出檢測(cè)到的角點(diǎn)的數(shù)量: " << corners.size() << endl;//參數(shù)設(shè)置Size winSize = Size(5, 5);Size zeroZone = Size(-1, -1);TermCriteria criteria = TermCriteria(TermCriteria::EPS + TermCriteria::MAX_ITER, 40, 0.001);//計(jì)算亞像素級(jí)角點(diǎn)位置cornerSubPix(gray, corners, winSize, zeroZone, criteria);//輸出精準(zhǔn)角點(diǎn)坐標(biāo)信息for (int i = 0; i < corners.size(); i++){cout << "[" << i << "]" << "號(hào)角點(diǎn)坐標(biāo):" << "(" << corners[i].x << ", " << corners[i].y << ")" << endl;}//繪制出被檢測(cè)的角點(diǎn)for (size_t i = 0; i < corners.size(); i++){circle(dst, corners[i], 6, Scalar(0, 0, 255), -2, 8, 0);}imshow("dst", dst); }運(yùn)行結(jié)果:
還是有角點(diǎn)沒(méi)有檢測(cè)到,要使用可以自己試著優(yōu)化下參數(shù)。
總結(jié)
以上是生活随笔為你收集整理的OpenCV亚像素角点检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用OpenCV进行身份证号码字符进行分
- 下一篇: 使用OpenCV实现图像中的文字切割