如何解决错误:(-215:断言失败)函数“ drawContours”中的npoints> 0

时间:2019-04-15 19:52:08

标签: opencv opencv-contour

绘制轮廓错误 我正在尝试为图像中的对象绘制轮廓

(_, contours) = cv2.findContours(binary, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# draw contours over original image
length = len(contours)
for c in range(length):
    cv2.drawContours(img,contours,c,(255,0,0),3)

cv2.namedWindow("output", cv2.WINDOW_NORMAL)
cv2.imshow("output", img)
cv2.waitKey(0)

我希望绘制所有轮廓,但是我得到的实际结果是 错误:

  

(-215:断言失败)函数'drawContours'中的npoints> 0

3 个答案:

答案 0 :(得分:1)

轮廓应为numpy数组。 将您的代码更改为:

for c in contours:
    cv2.drawContours(img,[c], 0, (255,0,0),3)

答案 1 :(得分:0)

由于cv2.findContours()无法找到任何轮廓,您遇到了该错误。确保OpenCV能够使用防护装置找到至少一个轮廓。另外,您输入的cv2.drawContours()参数不正确

(_, contours) = cv2.findContours(binary, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# draw contours over original image
length = len(contours)
if length > 0:
    cv2.drawContours(img,contours,-1,(255,0,0),3)

cv2.namedWindow("output", cv2.WINDOW_NORMAL)
cv2.imshow("output", img)
cv2.waitKey(0)

答案 2 :(得分:0)

您有轮廓,层次向后。请参阅findContours()

上的OpenCv文档
contours, hierarchy = cv2.findContours(binary,2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)