【发布时间】:2019-09-15 05:05:39
【问题描述】:
我的以下代码在 OpenCV 3.4.1 上运行良好,但现在不适用于 OpenCV 4.1.0 并出现错误。我不知道如何使代码适应较新的版本,你能帮我吗?非常感谢
def ImageProcessing(image):
image = cv2.absdiff(image, background)
h, gray = cv2.threshold(image, 65, 255, cv2.THRESH_BINARY_INV);
gray = cv2.medianBlur(gray,5)
kernel = np.ones((3,3), np.uint8)
gray = cv2.erode(gray, kernel, iterations=1)#1
des = cv2.bitwise_not(gray)
tmp = cv2.findContours(des,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
contour, hier = tmp[1], tmp[0]
for cnt in contour:
cv2.drawContours(des,[cnt],0,255,-1)
gray = cv2.bitwise_not(des)
gray = cv2.dilate(gray, kernel, iterations=1)#1
return gray
错误是
cv2.error: OpenCV(4.1.0) /io/opencv/modules/imgproc/src/drawing.cpp:2509: 错误: (-215:Assertion failed) npoints > 0 in function 'drawContours'
【问题讨论】:
-
尝试打印出 [cnt]。是点列表吗?
-
contour, hier = tmp[1], tmp[0]-- 错了。结果元组的第一个元素是轮廓,第二个是层次结构。阅读documentation。
标签: python image opencv image-processing computer-vision