c++ - 检测图像中圆圈和十字的位置

标签 c++ opencv computer-vision digitization

我是 OpenCV 的新手,想知道是否有人可以指导我使用最合适的算法来解决识别如下所示的图像中圆圈和十字的位置的挑战。 .

[ enter image description here

有时会有线路连接。 .

[ enter image description here enter image description here

它们甚至可能像这幅一样是手绘的。 .

enter image description here

到目前为止,我已经查看了模板匹配示例,但它可能不是正确的方法,并且它不会将模板的大小缩放到图像。

因此给出以下观察结果。 . .

  • 十字和圆圈可以重叠。
  • 如果图表是彩色的, 十字的颜色相同,圆圈的颜色相同。
  • 有时它们会用线连接,有时则不会。
  • 图中可能有其他形状符号
  • 它们的符号大小和形状相似,但可能不是计算机生成的,因此不一定完全相同。

我应该从哪里开始我的冒险?

最佳答案

这不是一件容易的事。

对于彩色情况,您应该从分离颜色平面开始。您有可能将标记分开。

但对于黑白情况,无路可逃,必须深入。

我会先尝试尽可能准确地检测网格线,例如使用霍夫线检测器。然后删除这些线条。

然后尝试找到十字,这是短的斜线段(大部分时间被前面的操作打断)。

这些圆可能会被霍夫圆检测器检测到,使用小范围的半径。

或者,可以使用脊线或边缘检测器来获取短线段和短曲线弧。您可能必须添加一些过滤条件以避免连接线。

关于c++ - 检测图像中圆圈和十字的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003500/

相关文章:

c++ - 一个内部表示不暴露给用户并且可以透明改变的类,这个例子是什么?

c++ - 重载一个简单的 = 运算符

opencv - ROS 图像订阅者 - 不出现弹出窗口

algorithm - 三角测量 : Find a 3D point minimizing the Distance from N 3D Lines/Rays

C++ 在 std::vector 中搜索

c++ - OpenCV计算时间检测特征

android - 使用 OpenCV 在 Android 中将 4 channel 矩阵转换为 1 channel

image-processing - 从霍夫变换中提取线段

python - 如何使用 OpenCV python 获取对象的大小?

c++ - 粗体/强调或突出显示单元格中的 fprintf mfc c++