cv2.findcontours无法持续工作

时间:2017-11-01 09:40:03

标签: python opencv opencv-contour

我在opencv方法findContours()方面遇到了一些问题,因为它对我不起作用。我的代码适用于我的一些图片,但不适用于其他图片。我无法找到我的错误,但我也是蟒蛇新手。

所以这是我的第一张图片: image1 当我使用阈值和形态学操作时,它看起来像这样:modified image1
当我使用我的代码来检测轮廓时,它工作得很好。
但现在还有另一张图片:image2
使用相同的修改:modified image2
现在代码找不到任何轮廓,除了一个点,它位于我的几何体之外的某个地方。

有没有人对此有答案?

这是我正在使用的代码:

im=Image.open(filename)
imarray=np.array(im)
roi=imarray[150:600,200:800]
ret,thresh1=cv2.threshold(roi,125,255,cv2.THRESH_BINARY)
kernel=np.ones([5,5])
closing = cv2.morphologyEx(thresh1, cv2.MORPH_CLOSE, kernel)
opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, kernel)
_,contours,_ = cv2.findContours(opening, cv2.RETR_LIST,cv2.CHAIN_APPROX_NONE)

编辑
这是第二张图片的thresh1输出: enter image description here

编辑2
不是"真的"解决了主要问题,但设法以某种方式使其工作:
我发现当我使用cv2.copyMakeBorder向图片添加边框时,cv2.findContours方法会设法找到这样的边框: box
并找到第二个轮廓,如下所示: extract
所以有我正在寻找的形式,但我必须操纵数据以获得预期的结果。
这并没有真正解决一般问题,但它是一种以某种方式仍然获得我的结构的方式...
编辑3
我刚刚在代码中发现了一个错误。在轮廓数据的进一步使用中,修改数据以拟合样条。在这个过程中,我没有使用np.copy制作我想要检索的轮廓的副本。在代码中实现之后,我得到了我想要的轮廓而不使用边框。所以cv2.findContours()方法没有问题,只是我没有经验的python。因此,案件已经结案。

0 个答案:

没有答案