我想检测一个物体,我尝试使用 OpenCV 中的 Houghcircles 函数,但我无法为所有图像获得更好的参数,但通过阈值处理,我可以过滤掉圆圈。我使用的代码是
int main()
{
// Load an image
src = imread("occupant/cam_000569.png");
threshold(src,binary,52,255,0);
imwrite("binary.png",binary);
canny(src,canny,50,200,3);
houghcircles(canny,circles,CV_HOUGH_GRADIENT,1,src.gray.rows/8,7,24,28);
阈值处理后,我得到了下面的图像,即使存在干扰,但对于 52
的阈值,我可以在对象清晰的所有其他图像中看到相同的情况。
使用带有参数的 canny
和 houghcircles
函数后,提到了代码。我可以检测到所需的物体。
但问题是,当我使用下一个图像时,相同的阈值适用,但对 canny 和 houghcircles 使用相同的参数,我无法检测到该对象。
所以我的问题是如何选择霍夫圆的参数或者是否可以使用不同的 OpenCV 函数检测对象?
最佳答案
我认为这里的主要问题是照明。在应用精明边缘检测器之前,尝试直方图均衡,然后进行一些平滑处理。您必须拍摄大量图像并估计对大多数图像都适用的精明参数和霍夫参数。不可能找到导致 100% 检测率的值。
另一种选择是使用 Haar 或 LBP 特征来训练您想要识别的对象的对象检测器。如果对象是圆形,这似乎有点矫枉过正。
关于c++ - 圆圈检测: parameters for houghcricles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841176/