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

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

相关推荐
shuaicoding1 小时前
OpenClaw 完全指南:让你的 AI 助手真正『长』在浏览器里
人工智能
刀法如飞1 小时前
AI时代,程序员都应该是算法思想工程师
人工智能·设计模式·程序员
理想小青年1 小时前
OpenClaw网络搜索Tavily Search Skill 安装教程
人工智能
yangpow22 小时前
深度解析 OpenClaw:一个自托管 AI Agent 网关的架构设计与安全机制
人工智能
agentium2 小时前
1小时LangChain教程
人工智能
工边页字2 小时前
面试官:请详细介绍下AI中的token,越详细越好!
前端·人工智能·后端
Miku162 小时前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku162 小时前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
熊崽3 小时前
Claude Code CLI+英伟达免费api 教程
人工智能
CoovallyAIHub3 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉