gpt4 book ai didi

python - OpenCV 版本 4.1.0 drawContours 错误 : (-215:Assertion failed) npoints > 0 in function 'drawContours'

转载 作者:太空狗 更新时间:2023-10-30 02:51:26 24 4
gpt4 key购买 nike

我有以下代码在 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: error: (-215:Assertion failed) npoints > 0 in function 'drawContours'

最佳答案

根据 OpenCV 版本,cv2.findContours() 具有不同的返回签名。

在 OpenCV 3.4.X 中,cv2.findContours()返回 3 个项目

image, contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

在 OpenCV 4.1.X 中,cv2.findContours()返回 2 个项目

contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

无论版本如何,您都可以轻松获取轮廓:

cnts = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]

由于最后两个值始终相同,我们可以使用 [-2:] 进一步将其压缩成一行,以从 cv2.findContours 返回的元组中提取轮廓()

cnts, _ = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2:]

关于python - OpenCV 版本 4.1.0 drawContours 错误 : (-215:Assertion failed) npoints > 0 in function 'drawContours' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55854810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com