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

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

相关推荐
xcbeyond2 分钟前
从 MCP 到 RAG 再到 Agent:AI 应用架构的下一次跃迁
人工智能
Godspeed Zhao13 分钟前
自动驾驶中的传感器技术74——Navigation(11)
人工智能·机器学习·自动驾驶
Godspeed Zhao14 分钟前
自动驾驶中的传感器技术75——Navigation(12)
人工智能·机器学习·自动驾驶
rengang6627 分钟前
04-深度学习的基本概念:涵盖深度学习中的关键术语和原理
人工智能·深度学习
杨成功31 分钟前
大语言模型(LLM)学习笔记
人工智能·llm
文火冰糖的硅基工坊33 分钟前
[人工智能-大模型-122]:模型层 - RNN是通过神经元还是通过张量时间记录状态信息?时间状态信息是如何被更新的?
人工智能·rnn·深度学习
Dev7z33 分钟前
基于深度学习的中国交通警察手势识别与指令优先级判定系统
人工智能·深度学习
阿_旭34 分钟前
复杂环境下驾驶员注意力实时检测: 双目深度补偿 + 双向 LSTM
人工智能·lstm·驾驶员注意力
Elastic 中国社区官方博客1 小时前
Elastic AI agent builder 介绍(三)
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
这张生成的图像能检测吗2 小时前
(论文速读)YOLA:学习照明不变特征的低光目标检测
图像处理·人工智能·目标检测·计算机视觉·低照度