部分被遮挡的物体(平行线)检测

object (parallel lines) detection where a part is occluded

我在使用 opencv/python 进行对象检测时遇到了一些问题。

看图就知道两个绿框的四个角了。我要检测的对象是红色内衬的对象,一种软管形状。

我的计划是从绿框中获取软管的宽度 (w)(我已经完成了),并找到彼此之间距离为 w 的平行线。

在这里我遇到了两个问题,正在寻找可能的解决方案。

  1. 如何检测所有平行线?我认为最好从绿框的四个角开始,因为这些点在红线的路径上。我希望我可以从角落投射线条,使它们跟随白色像素,直到遇到死胡同或尖角。有什么方法可以在白色轮廓中导航吗?

  2. 下一个问题(假设Q1已经解决)是红色线在中间被黄色部分遮挡了。我怎样才能使两个红色部分被视为同一个对象?我正在寻找底部红线的尽头。

How could I detect all parallel lines?

我能想到的一种方法是使用 HoughLines 检测图像中的线条。从那个 link:

lines = cv2.HoughLines(edges,1,np.pi/180,200)

这将 return 所有检测到的线,由两个变量参数化:rho(与原点的距离)和 theta (与原点的角度)

之后,平行线将是那些具有相同角度 (theta) 但不同 rho 值的线