c++ - 圆圈检测: parameters for houghcricles

标签 c++ opencv image-processing

我想检测一个物体,我尝试使用 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 的阈值,我可以在对象清晰的所有其他图像中看到相同的情况。

使用带有参数的 cannyhoughcircles 函数后,提到了代码。我可以检测到所需的物体。

但问题是,当我使用下一个图像时,相同的阈值适用,但对 canny 和 houghcircles 使用相同的参数,我无法检测到该对象。

所以我的问题是如何选择霍夫圆的参数或者是否可以使用不同的 OpenCV 函数检测对象?

最佳答案

我认为这里的主要问题是照明。在应用精明边缘检测器之前,尝试直方图均衡,然后进行一些平滑处理。您必须拍摄大量图像并估计对大多数图像都适用的精明参数和霍夫参数。不可能找到导致 100% 检测率的值。

另一种选择是使用 Haar 或 LBP 特征来训练您想要识别的对象的对象检测器。如果对象是圆形,这似乎有点矫枉过正。

关于c++ - 圆圈检测: parameters for houghcricles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841176/

相关文章:

c++ - 堆栈展开期间未调用两个析构函数之一

c# - EmguCV - 匹配模板

python - 使用 opencv python 识别图像中的文本数据以读取 mm/dd、描述和金额

python - 如何统一面部的颜色和纹理

c++ - 图像处理 如何应用渐变 [-1 | 0 | 1]转RGB图像

c++ - 多个左值等价定义

c++ - 在 C++ 中,当我需要使用枚举时,如何避免#include 头文件?

c++ - CMake如何找到编译的包

c - OpenCV cvFindContours - 我如何分离轮廓的组件

opencv - 使用 cv::Mat 在 OpenCV 2.4.2 中裁剪 ROI 并将其另存为新图像