Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找openCV python中通过线连接的对象_Python_Opencv_Machine Learning_Computer Vision - Fatal编程技术网

如何查找openCV python中通过线连接的对象

如何查找openCV python中通过线连接的对象,python,opencv,machine-learning,computer-vision,Python,Opencv,Machine Learning,Computer Vision,您好,请查看下面的图片 我真正想要的是 1) 使用OpenCV连接哪一条线和哪一个矩形 例如,假设连接到第一个和第三个三角形/矩形的线将返回一个字典,如{“line_1”:[triangle_1,rectabgle_2,traingale_3],} 键作为线,值作为连接的对象 我尽了最大努力,但我面临着矩形结果和垂直线的问题 另外,如果您有任何逻辑,请让我知道我不打算在这里编写任何代码,而只是一个简单的方法,您可以使用它来获得所需的结果: 对图像进行二值化,使线条/矩形/三角形成为前景像素 运行

您好,请查看下面的图片

我真正想要的是 1) 使用OpenCV连接哪一条线和哪一个矩形 例如,假设连接到第一个和第三个三角形/矩形的线将返回一个字典,如
{“line_1”:[triangle_1,rectabgle_2,traingale_3],}

键作为线,值作为连接的对象

我尽了最大努力,但我面临着矩形结果和垂直线的问题


另外,如果您有任何逻辑,请让我知道

我不打算在这里编写任何代码,而只是一个简单的方法,您可以使用它来获得所需的结果:

  • 对图像进行二值化,使线条/矩形/三角形成为前景像素
  • 运行findContours以查找长方体/三角形
  • 对它们进行凸包分类(矩形/三角形)。获取边界框
  • 删除分类轮廓以获得线条。这些应该是目前仅存的轮廓
  • 找出哪些直线的端点靠近分类的矩形/三角形

  • 您可能需要的Opencv功能:自适应阈值、findContours、convexHull等。

    @Dharman感谢您的回复。我已经按照你们给出的所有步骤去做了。但问题是我无法检测出不正确的线条。它们是垂直的直线,并且无法提取矩形,因为在我的图像中,它返回了各种形状,被视为矩形。。这个问题看起来很简单,但它是not@Murli,请向我们展示您通过上述方法获得的结果。有了findContours,你不必担心直线是水平的还是垂直的。看到这个了吗[您需要将cv2.RETR_外部指令与“查找轮廓”一起使用。您可以发布用于此目的的代码吗?不要使用cv2.RETR_列表,它将为您提供所有轮廓,您会发现对您的用例很难进行过滤。如果需要,您还可以使用cv2.RETR_CCOMP并使用hierarchy-1轮廓和hierarchy-2进行进一步过滤ed.使用CCOMP的另一个好处是,它可以告诉您轮廓是父轮廓还是子轮廓,以及轮廓是闭合的还是打开的。