如何使用OpenCv Python检测图像上的特定标记

2024-04-20 09:07:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图检测物体上的一个标记,并确定它是从中心向左还是向右。 以下标有绿色箭头的内容是我试图检测的内容:

图片:

enter image description here

我已经阅读了opencv文档,但找不到类似的方法。 现在的基本步骤是只检测图像的具体细节,每次都要工作,然后我期待着确定它是在右边还是左边

我该怎么做

编辑:我尝试了shawn的方法,看看它是否有效,并且得到了答案。唯一的问题是,通过我的实验,我似乎无法得到shawn答案中所示的完美a值


Tags: 方法答案文档标记图像内容步骤图片
3条回答

我已经尝试使用HSV目标检测,并取得了一些相当好的结果,但现在唯一的问题是,我只有蒙面版本的图像,我想从中检测标记,这是一个相当中等大小的轮廓

这幅图将阐明这一点: (What I Have Achieved )

如果您的图像都相对相似,您应该能够应用一些过滤器(模糊和阈值)来突出感兴趣的区域

之后,;执行一些水滴检测:

其实,;使用下面链接中的答案,我就能够做到这一点;稍微调整一下

OpenCVs BlobDetector crashes

enter image description here

我猜这是显微镜的输出

首先,您必须检测(定位)图像中的对象:

  1. 我的默认解决方案是使用机器学习模型进行对象检测。如果您有大量标记数据(例如带注释的图像),则可以使用这种方法。 例如,您可以为此问题训练一个YOLOv3微型模型。无需深入研究太多代码,您就可以找到检测不同内容的教程,并将其应用于您的问题。例如,您可以遵循this tutorial,然后您将提出更具体的问题

  2. 如果您熟悉使用机器学习和PyTorch和TensorFlow等框架的对象检测,您可以找到比YOLOv3 tinyfrom the GitHub更轻的模型,并可以重新训练它们

您可以使用机器学习实现疯狂的精确度,但是,还有其他方法:

  1. 机器学习以外的其他解决方案可能是object detection using contour plotsobject detection using HSV color space。您可以在YouTube或其他教程平台上找到其他无需机器学习的图像处理方法

也许您可以按照这些教程进行操作,然后询问更具体的代码相关问题,如“为什么模糊不适用于我的等高线图代码?”

其次,在能够检测到对象后,应提取边界框坐标中心,并将其与图像中心坐标进行比较。

如果检测到的对象边界框中心的X坐标大于(图像宽度)/2,则对象位于图像右侧。如果较小,则检测到的对象位于图像的左侧

希望这能回答你的问题

相关问题 更多 >