error: (-215:Assertion failed) npoints > 0 in function 'cv::drawContours'
时间: 2023-11-27 13:46:23 浏览: 174
该错误是由于在使用OpenCV的drawContours函数时,传递的轮廓点数为0导致的。这通常是由于没有正确找到轮廓或者没有将轮廓转换为整数类型数组所导致的。可以通过检查轮廓是否为空或者使用cv2.findContours函数来解决此问题。以下是一个例子:
```python
import cv2
# 读取图像并转换为灰度图像
img = cv2.imread('example.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化图像
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
if len(contours) > 0:
cv2.drawContours(img, contours, -1, (0, 0, 255), 3)
else:
print("未找到轮廓")
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
相关问题
max_contour1 =max (cnts1, key=cv2.contourArea)#蓝色 cv2.error: Opencv(3.4.16) /home/pi/Documents/opencv-3:4:16/modu les/ingprog/src.(shapedescr.cpp:315: error : (-215:Assertion failed) npoints >= 0 8& (depth == CV_32F 1I depth == CV_ 32S) in function‘co ntourArea'
这个错误提示是因为在执行 `cv2.contourArea` 函数时,输入的轮廓 `cnts1` 中含有无效的轮廓,可能是因为在处理图像时未能正确提取轮廓。建议您检查一下程序中提取轮廓的部分,确保轮廓是正确的。您也可以尝试使用 `cv2.findContours` 函数重新提取轮廓。如果问题仍然存在,您可以提供更多的程序代码和图像以便更好地帮助您解决问题。
x, y, w, h = cv2.boundingRect(contours[0]) cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-ykpa0m5d\opencv\modules\imgproc\src\shapedescr.cpp:874: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::pointSetBoundingRect'
这个错误是由于 cv2.boundingRect() 函数的参数传递错误导致的。这个函数需要一个轮廓列表作为参数,而你可能是没有成功找到轮廓或没有将其转换为列表形式。请检查你的代码,确保找到了正确的轮廓,并将其传递给 cv2.boundingRect() 函数。另外,也可以检查一下轮廓列表的数据类型,确保它们是 CV_32F 或 CV_32S 类型。
阅读全文