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

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

相关推荐
#卢松松#8 分钟前
用秒悟(meoo)制作了一个GEO查询小工具。
人工智能·创业创新
zandy101111 分钟前
Agentic BI 架构实战:当AI Agent接管数据建模、指标计算与可视化全链路
人工智能·架构
数字供应链安全产品选型13 分钟前
关键领域清单+SBOM:834号令下软件供应链的“精准治理“逻辑与技术落地路径
人工智能·安全
Flying pigs~~18 分钟前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
zuozewei34 分钟前
从线下到等保二级生产平台:一次公有云新型电力系统 AI 部署复盘
人工智能
sanshanjianke35 分钟前
AI辅助网文创作理论研究初步总结(一):AI辅助网文创作系统
人工智能·ai写作
碳基硅坊39 分钟前
OpenClaw 落地应用实践:把 AI 从“能聊“变成“能干活“
人工智能·openclaw
β添砖java41 分钟前
深度学习(13)PyTorch神经网络基础
人工智能·深度学习
天疆说41 分钟前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习
AI医影跨模态组学1 小时前
如何将淋巴结影像组学特征与肿瘤血管异质性及缺氧微环境建立关联,并进一步解释其与晚期胆道癌免疫治疗响应及预后的机制联系
人工智能·论文·医学·医学影像·影像组学