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

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

相关推荐
孙启超1 分钟前
【AI开发之Rust】第 1 课:认识 Rust 与开发环境 —— 装好工具链,跑通第一个程序
开发语言·人工智能·后端·ai·rust·安全架构
桃西西呀4 分钟前
GPT-6 Astra 强到被锁起来:拆开它的 computer-use 架构、可搜索记忆与计费悬崖
人工智能·gpt·llm
开发笔记-阿牛6 分钟前
嵌入式蓝牙开发:AC2005B 芯片技术解析 —— 省晶振设计、13dBm 射频与 Auracast 广播音响开发指南
人工智能·单片机·音视频
大树888 分钟前
液冷系统的真正瓶颈,藏在那层不到1毫米的材料里
大数据·运维·服务器·人工智能·ai
ChampaignWolf11 分钟前
SAP 官方 ABAP MCP Server 正式落地:ABAP 开发进入 Agentic AI 时代
人工智能·sap·abap·人工智能ai·mcp
Beyond_System|系统之外16 分钟前
ChatGPT5.2_Codex_零基础图文手册
人工智能
码农哈丁18 分钟前
用 Trait 给系统留出后路:RAG 存储层如何做到 5 种后端可插拔
人工智能·知识图谱·rag
知几蜗牛22 分钟前
ChatGPT图像升级后,真正被改写的是创作工作流
人工智能
知几蜗牛28 分钟前
GPT‑6 Astra真正的变化:AI开始直接操作工作软件
人工智能
zhangzeyuaaa28 分钟前
深入理解 pip install .:安装当前目录项目的正确姿势
人工智能·python·pip