在使用 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'

这个错误信息是指在计算轮廓面积时,出现了断言失败的情况。可能是由于以下原因导致的:

  1. 轮廓点数小于 0:这意味着您的轮廓可能为空,或者您在获取轮廓时出现错误。
  2. 深度不是 CV_32F 或 CV_32S:轮廓点坐标的深度必须是单精度浮点数 (CV_32F) 或整数 (CV_32S)。

解决方法:

  1. 确保您的轮廓数据有效,并且轮廓点数不小于 0。
  2. 检查轮廓点坐标的深度,确保它们是 CV_32F 或 CV_32S。
  3. 如果您使用的是其他数据类型,请尝试将其转换为 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 函数的文档了解更多信息。
  • 如果您仍然遇到问题,请提供更多关于您的代码和数据的详细信息,以便更好地帮助您解决问题。
OpenCV 4.7.0 轮廓面积计算错误:'npoints >= 0 && (depth == CV_32F || depth == CV_32S)' 断言失败

原文地址: https://www.cveoy.top/t/topic/neK9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录