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

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

相关推荐
Codebee7 分钟前
SuperAgent核心术语全解析:企业智能化转型必备指南
人工智能
AI科技星8 分钟前
光子的几何起源与量子本质:一个源于时空本底运动的统一模型
服务器·人工智能·线性代数·算法·机器学习
创客匠人老蒋13 分钟前
静水流深:在业务深处,看见AI的真实力量
人工智能·创始人ip·创客匠人
杭州泽沃电子科技有限公司13 分钟前
充电安全防线:以实时在线监测破解电动自行车火灾困局
人工智能·在线监测·智能监测
阿坤带你走近大数据42 分钟前
Rag与RagFlow的区别
人工智能·知识图谱
2501_9059673342 分钟前
双目视觉:CREStereo论文超详细解读
人工智能·python·计算机视觉·双目视觉
狗狗学不会44 分钟前
Pybind11 封装 RK3588 全流程服务:Python 写逻辑,C++ 跑并发,性能起飞!
c++·人工智能·python·目标检测
好好沉淀1 小时前
Spring AI Alibaba
java·人工智能·spring
陈天伟教授1 小时前
人工智能应用-机器视觉:AI 美颜 02.生成对抗网络
人工智能·神经网络·生成对抗网络