drawContour无法使用OpenCV 3.4

时间:2018-04-18 12:58:40

标签: python opencv opencv3.0 opencv3.1 opencv-contour

我正在努力寻找此图片中的轮廓:enter image description here

这是我的代码:

import numpy as np
import cv2
im = cv2.imread('test.jpg')

##imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
cv2.namedWindow('gray',cv2.WINDOW_NORMAL)
cv2.imshow('gray',im)
cv2.waitKey()
ret, thresh = cv2.threshold(imgray, 0, 255, 
 cv2.THRESH_BINARY+cv2.THRESH_OTSU)
_, contours, _ = cv2.findContours(thresh, cv2.RETR_LIST, 
cv2.CHAIN_APPROX_NONE)

print ("number of countours detected before filtering %d -> "%len(contours))

new = np.zeros(im.shape)
new = cv2.drawContours(im,contours,-1,(0,0,255))

cv2.namedWindow('Display',cv2.WINDOW_NORMAL)
cv2.imshow('Display',new)
cv2.waitKey()

问题:1。制作的图像总是全黑,从不显示任何东西,只是纯黑色图像。通过我的描述你可以意识到我是图像处理的新手。我试图用红色显示身体轮廓,但没有出现。

我正在使用open cv 3.4.0和python 3.6

欢迎任何建议/解决方案,谢谢。

1 个答案:

答案 0 :(得分:0)

您必须使用cv2.RETR_LIST,而不是使用cv2.RETR_EXTERNAL

    如果要列出图像中的所有轮廓,则使用
  • cv2.RETR_LIST
  • 有时在某些轮廓中可能会出现轮廓。外面的那些被称为,而内部的被称为孩子。如果您只想要这些轮廓,请使用cv2.RETR_EXTERNAL

您可以在THIS LINK

上找到有关此内容的更多信息