- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下代码在 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/
在制作从验证码图像中提取字母的程序时,出现错误: cv2.error: OpenCV(4.0.0) /io/opencv/modules/imgproc/src/shapedescr.cpp:741:
绘制轮廓错误我正在尝试为图像中的对象绘制轮廓 (_, contours) = cv2.findContours(binary, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_S
我正在尝试从轮廓创建 mask ,但出现 C++ 错误。 使用 OS X Yosemite、Python 2.7.10、OpenCV 3.1.0。 def create_mask(img, cnt):
Delphi 10.1 Pro,带有嵌入式 Teechart 控件的 VCL。CalcClickedPart 在标记设置为隐藏在之前显示的位置后显示 cpSeriesMarks。 我可能没有正确删除标
这是我为进行手部检测而编写的完整代码,但不幸的是,我被卡住了,因为当提供给 drawContours() 函数时,convexHull 输出出现错误。请帮忙! @attached here 也是错误的
当我运行这段代码时: import cv2 image = cv2.imread('screenshoot10.jpg') cv2.imshow('input image', image) gray
我在 this website 上找到了以下代码: import os import os.path import cv2 import glob import imutils CAPTCHA_IMA
我正在尝试使用代码阅读多项选择测试反馈中的答案,但出现以下错误消息: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F |
我有以下代码在 OpenCV 3.4.1 上运行良好,但现在不能在 OpenCV 4.1.0 上运行并给出错误。我不知道如何使代码适应新版本,你能帮我吗?非常感谢 def ImageProcessin
我编写了一个使用魔数(Magic Number)的代码,现在我正试图将魔数(Magic Number)放入变量中。本质上,我创建了一个包含固定数量元素的数组,填充数组,然后将其转换为 vector 。
我是一名优秀的程序员,十分优秀!