如何计算掩膜图中多个封闭图形的面积

python 复制代码
import cv2

def calMaskArea(image,idx):
    mask = cv2.inRange(image, idx, idx)
    contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    for contour in contours:
        area = cv2.contourArea(contour)
        print("图形的面积为", area)

image是包含多个封闭图形的掩膜图,如下:

idx表示掩膜的值,即图形的像素值,在RGB图像中是三维元组。e.g. (0,255,0)

contours中包含多个轮廓。

代码思路

  1. 使用cv2.inRange将图像二值化
  2. 使用cv2.findContours获取二值图像的轮廓,再使用cv2.contourArea计算每个轮廓的面积。

:直接对二值图像使用cv2.countNonZero无法分辨不同的封闭图形。

缺陷

这样计算的精度还不够高,比如计算圆形会损失1.9%的精度

圆形面积为7853.981633974483

图形的面积为 7704.0

相关推荐
zhengfei611几秒前
Clawdbot技能合集,精彩纷呈。(Clawdbot已正式更名为Moltbot)
人工智能·语言模型
TGITCIC3 分钟前
RAG不是魔法,是工程:从知识库到企业部署的硬核实践
人工智能·算法·机器学习·rag·ai agent·ai开发·rag增强检索
萤丰信息7 分钟前
智慧园区:当钢筋水泥开始“光合作用”
人工智能·科技·安全·架构·智慧城市·智慧园区
运维小欣9 分钟前
汽车制造业可观测性平台选型指南
人工智能·汽车
KmjJgWeb9 分钟前
基于红外热成像的自动驾驶环境中的运动物体检测_YOLOv26_1
人工智能·yolo·自动驾驶
花间相见9 分钟前
【AI开发】—— LangChain框架
人工智能·python·langchain
懒羊羊吃辣条10 分钟前
问题解决方法—更新Nvidia显卡驱动后,WSL系统CUDA失效并且Anaconda环境消失
人工智能·深度学习·transformer
菜鸟兽超级进化14 分钟前
工业人工智能模型:认知、开发难点及服务商汇总
人工智能
柳鲲鹏17 分钟前
OpenCV: DNN超采样,性能差,只能整数
人工智能·opencv·dnn
林林宋17 分钟前
speech/music/sing 分离
人工智能