gpt4 book ai didi

c++ - OpenCV:防止 HoughCircles 方法使用 Canny 检测

转载 作者:可可西里 更新时间:2023-11-01 18:27:23 24 4
gpt4 key购买 nike

我正在使用 HoughCircles 实时检测球,但在我的灰度图像流上运行 Canny 并没有按预期创建所有边缘。为了解决这个问题,我将 rgb 图像拆分为单独的 channel ,对每个 channel 执行 Canny,然后使用按位或将边缘合并在一起。这工作得很好,但如果我将该边缘图像提供给 HoughCircles,它将再次对边缘图像执行 Canny。有没有办法防止这种情况,或者放弃我正在执行的 rgb split Canny 检测,同时仍然捕捉到所有边缘?

最佳答案

确实! Canny 由 HoughCircles 内部执行并且无法调用 cv::HoughCircles() 并阻止它调用 Canny。

但是,如果您想坚持使用当前的方法,一种替代方法是复制 OpenCV 源代码中可用的 cv::HoughCircles() 的实现,并且修改它以满足您的需要。这将允许您编写自己的 cv::HoughCircles() 版本。

如果您遵循此路径,请务必认识到 OpenCV 的 C++ API 是基于 C API 构建的。这意味着 cv::HoughCircles() 只是 cvHoughCircles() 的包装器,它在 opencv-2.4.7/modules/imgproc/src 中实现/hough.cpp 第 1006 行之后。

看看这个函数(第 1006 行),注意第 1064 行对 icvHoughCirclesGradient() 的调用。这是负责调用 cvCanny() 的函数,这是在第 817 行完成的。

另一种方法,if the ball is single-colored , 可以通过使用 cv::inRange() 来实现 isolate a specific color ,这将提供更快的检测。此外,该主题已在该论坛上进行了广泛讨论。一个非常有趣的话题是:

关于c++ - OpenCV:防止 HoughCircles 方法使用 Canny 检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20182439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com