我试图使用python OpenCV找到并分离边缘检测图像中的所有边缘。边缘可以是轮廓的形式,但他们不必这样做。我只想将所有连接的边缘像素组合在一起。因此从技术上讲,算法可能在程序上听起来像这样:
我查看了cv.findContours
,但结果并不令人满意,可能是因为它是用于轮廓(封闭边)而不是自由端。结果如下:
检测到原始边缘:
轮廓处理后:
我预计每个五条边将被分组到它自己的图像细分中,但显然cv2.findContours函数会将2个边缘进一步分解为我不想要的细分。
以下是我用来保存这两张图片的代码:
def contourForming(imgData):
cv2.imshow('Edge', imgData)
cv2.imwrite('EdgeOriginal.png', imgData)
contours = cv2.findContours(imgData, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.imshow('Contours', imgData)
cv2.imwrite('AfterFindContour.png', imgData)
cv2.waitKey(0)
pass
然而,我的实施存在限制。我必须使用Python 2.7和OpenCV2。除了这些之外,我不能使用任何其他版本或语言。我这样说是因为我知道OpenCV 2有一个使用C ++的connectedComponent函数。我本可以使用它,但问题是,由于某些限制我无法使用它。
那么,任何想法我应该如何处理这个问题?