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

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

相关推荐
霸道流氓气质11 分钟前
Java 工程师 AI 智能体学习路线 · 阶段 1:AI / LLM 基础认知 详解
java·人工智能·学习
武子康11 分钟前
调查研究-224 Prefill 与 Decode 分离:高并发 LLM Serving 的下一层架构
人工智能·ai·架构·llm·gpu·vllm·sglang
ting945200012 分钟前
技术解析:Owl Alpha 底层架构与 OpenRouter 模型网关全链路实现(无营销、纯技术向)
人工智能·架构
水如烟20 分钟前
孤能子视角:三十六计之抛砖引玉——涌现捕获
人工智能
格子生意经23 分钟前
GEO系统如何提升AI引荐率实战解析
人工智能
沪漂阿龙25 分钟前
什么是大语言模型?和传统 NLP 模型有什么区别?
人工智能·语言模型·自然语言处理
大鱼>33 分钟前
AI+资产监控:农业设施智能监控系统
人工智能·深度学习·算法·机器学习
AI科技星40 分钟前
乖乖数学·全域超复数统一场论:五大核心门槛与全套标准定量数据
人工智能·python·算法·金融·全域数学
IT_陈寒44 分钟前
Vite冷启动快?我遇到了个奇怪的依赖问题
前端·人工智能·后端
中微极客44 分钟前
2026 AI视频生成器选型指南:Kling 3.0深度解析
人工智能·音视频