drawContour 不适用于 OpenCV 3.4
drawContour doesn't work OpenCV 3.4
我非常努力地尝试在这张图片中找到轮廓: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. 生成的图像总是全黑,什么也没有显示,只是纯黑图像。通过我的描述你可以意识到我是图像处理的新手。我试图用红色显示 body 等高线,但什么也没有出现。
我正在使用 open cv 3.4.0 和 python 3.6
欢迎任何建议/解决方案,谢谢。
您必须使用 cv2.RETR_EXTERNAL
,而不是使用 cv2.RETR_LIST
。
cv2.RETR_LIST
用于列出图像中的所有轮廓。
- 有时在某些轮廓中可能会有轮廓。外面的叫parent,里面的叫child。当你只想要这些 parent 轮廓时使用
cv2.RETR_EXTERNAL
.
您可以在 THIS LINK
上找到更多相关信息
我非常努力地尝试在这张图片中找到轮廓: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. 生成的图像总是全黑,什么也没有显示,只是纯黑图像。通过我的描述你可以意识到我是图像处理的新手。我试图用红色显示 body 等高线,但什么也没有出现。
我正在使用 open cv 3.4.0 和 python 3.6
欢迎任何建议/解决方案,谢谢。
您必须使用 cv2.RETR_EXTERNAL
,而不是使用 cv2.RETR_LIST
。
cv2.RETR_LIST
用于列出图像中的所有轮廓。- 有时在某些轮廓中可能会有轮廓。外面的叫parent,里面的叫child。当你只想要这些 parent 轮廓时使用
cv2.RETR_EXTERNAL
.
您可以在 THIS LINK
上找到更多相关信息