欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

OpenCV亚像素角点检测

发布时间:2025/3/21 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 OpenCV亚像素角点检测 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言

我在做围棋盘的的四个角点检测时,试了几种角点检测,用来得到棋盘四个角的初始点,试了几种角点检测的方法,但在我所使用的环境下,亚像素的角点检测得到的结果比较理想。

代码

//亚像素角点检测 void cornerDetectorPixel(Mat &src, Mat &dst) {Mat src_img, gray;//读取图像src_img = src.clone();//把原图像转换成灰度图cvtColor(src_img, gray, COLOR_BGR2GRAY);vector<Point2f> corners;dst = src_img.clone();//进行角点检测goodFeaturesToTrack(gray, corners, 4, 0.01, 10, Mat(), 3, false, 0.04);//输出检测到的角点的数量cout << "输出检测到的角点的数量: " << corners.size() << endl;//参数设置Size winSize = Size(5, 5);Size zeroZone = Size(-1, -1);TermCriteria criteria = TermCriteria(TermCriteria::EPS + TermCriteria::MAX_ITER, 40, 0.001);//计算亚像素级角点位置cornerSubPix(gray, corners, winSize, zeroZone, criteria);//输出精准角点坐标信息for (int i = 0; i < corners.size(); i++){cout << "[" << i << "]" << "号角点坐标:" << "(" << corners[i].x << ", " << corners[i].y << ")" << endl;}//绘制出被检测的角点for (size_t i = 0; i < corners.size(); i++){circle(dst, corners[i], 6, Scalar(0, 0, 255), -2, 8, 0);}imshow("dst", dst); }

运行结果:

还是有角点没有检测到,要使用可以自己试着优化下参数。

总结

以上是生活随笔为你收集整理的OpenCV亚像素角点检测的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。