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

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

相关推荐
聚客AI几秒前
🧠深度解析模型压缩革命:减枝、量化、知识蒸馏
人工智能·深度学习·llm
SHIPKING3937 分钟前
【机器学习&深度学习】Ollama、vLLM、LMDeploy对比:选择适合你的 LLM 推理框架
人工智能·深度学习·机器学习
zzywxc78719 分钟前
AI 行业应用:金融、医疗、教育、制造业领域的落地案例与技术实现
android·前端·人工智能·chrome·金融·rxjava
新智元36 分钟前
刚刚,GPT-5 Pro 自证全新数学定理!OpenAI 总裁直呼颠覆,大佬们集体转发
人工智能·openai
新智元42 分钟前
28 岁华人执掌 1.85 万亿科技巨头 AI 大权!一觉醒来,图灵奖得主也要向他汇报
人工智能·openai
居然JuRan1 小时前
从LoRA到QLoRA再到全量微调
人工智能
腾讯云开发者1 小时前
数字化下半场:数智融合如何驱动增长新势能?
人工智能
机器之心1 小时前
字节开源Seed-OSS-36B模型,512k上下文
人工智能·openai
北极的树1 小时前
从源码看Google LangExtract如何应对长文本数据挖掘的挑战
人工智能
coding者在努力1 小时前
深度学习核心技巧
人工智能·深度学习