如何解决使用Opencv C ++查找图像中的小圆圈
下面是附加的图像,我试图检测大圆圈内存在的小圆圈,并使其为 x和y坐标。 到目前为止,我已经尝试使用 HoughCircles , findContours ,但是我无法获得理想的结果。
谁能建议如何解决这个特殊问题。
已编辑: 我用过这种算法
cv::Mat tmp_mat,grey_mat;
cv::cvtColor(load_image,tmp_mat,cv::COLOR_BGR2GRAY);
cv::GaussianBlur(tmp_mat,grey_mat,cv::Size(7,7),0);
cv::imshow("color",grey_mat);
// Step -2
std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i > hierarchy;
cv::Mat edged;
cv::Canny(grey_mat,edged,20,140);
cv::findContours(edged,contours,hierarchy,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE);
std::cout << "Contour Size: " << contours.size();
尽管代码正在检测大圆圈内的圆圈。问题是如何排除大圈子之外的圈子。
解决方法
您可以尝试使用Corner Harris detector。它将检测图像中的小圆角。但是,它可能会为每个圆检测到多个角,因此您可以尝试对结果进行一些过滤。
有一个在线演示可以立即尝试:demo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。