OpenCV 4.7.0 轮廓面积计算错误:'npoints >= 0 && (depth == CV_32F || depth == CV_32S)' 断言失败
在使用 OpenCV 4.7.0 计算轮廓面积时,可能会遇到如下错误信息:
'D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\shapedescr.cpp:315: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::contourArea'
这个错误信息是指在计算轮廓面积时,出现了断言失败的情况。可能是由于以下原因导致的:
- 轮廓点数小于 0:这意味着您的轮廓可能为空,或者您在获取轮廓时出现错误。
- 深度不是 CV_32F 或 CV_32S:轮廓点坐标的深度必须是单精度浮点数 (CV_32F) 或整数 (CV_32S)。
解决方法:
- 确保您的轮廓数据有效,并且轮廓点数不小于 0。
- 检查轮廓点坐标的深度,确保它们是 CV_32F 或 CV_32S。
- 如果您使用的是其他数据类型,请尝试将其转换为 CV_32F 或 CV_32S。
示例代码:
import cv2
# 加载图像
img = cv2.imread('image.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_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 确保轮廓存在
if len(contours) > 0:
# 获取第一个轮廓
cnt = contours[0]
# 计算轮廓面积
area = cv2.contourArea(cnt)
print('轮廓面积:', area)
注意:
- 确保您已经正确安装了 OpenCV 库。
- 您可以使用 OpenCV 文档中的
cv2.contourArea函数的文档了解更多信息。 - 如果您仍然遇到问题,请提供更多关于您的代码和数据的详细信息,以便更好地帮助您解决问题。
原文地址: https://www.cveoy.top/t/topic/neK9 著作权归作者所有。请勿转载和采集!