无法找到所有轮廓 - Opencv,python

时间:2017-09-05 19:01:28

标签: python-2.7 opencv

我正在处理图像以查找轮廓,我成功地能够识别下图中的几乎所有轮廓。但我无法找到左侧两个灰色框等特定轮廓。我已经尝试了所有轮廓方法,如树,列表,外部,也尝试了阈值。

请建议如果我遗失了某些东西或者可以做些改进

img = cv2.imread(input_image, 0)

kernel = np.ones((5, 5),np.uint8)
morphological_img = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

canny_img = cv2.Canny(morphological_img, 200, 300)
input_imag, contours, hierarchy = 
cv2.findContours(canny_img,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # get contours

https://i.stack.imgur.com/WomfA.png

1 个答案:

答案 0 :(得分:1)

您的问题未显示或链接到其引用的图像。但以下是改善这一点的步骤:

  1. 除非你的图像已经是二进制的,否则标准方法是首先应用阈值,然后使用形态学操作。

  2. 如果您只对轮廓感兴趣,可以先进行精确边缘检测,然后使用形态学运算来增强想要检测的轮廓。

  3. 如果canny_img没有显示与所需轮廓相对应的边缘(尝试cv2.imshow),则findContours会有很多用处,如果有的话。

  4. 如果您可以编辑答案以包含图片,我们将能够提供更具体的答案。