首页 > 其他分享 >OpenCV(cv::mean())

OpenCV(cv::mean())

时间:2024-09-26 15:45:18浏览次数:9  
标签:平均值 OpenCV Scalar 图像 掩码 cv mean

目录



cv::mean() 是 OpenCV 中用于计算图像的平均值的函数。它可以用于单通道图像、多通道图像(如彩色图像)、带掩码的图像等。



1. 函数定义

Scalar cv::mean(InputArray src, InputArray mask = noArray());
  • src: 输入图像或矩阵,类型可以是多通道或单通道图像。
  • mask: (可选)掩码图像,它是一个8位单通道的二值图像。如果提供掩码,则只对掩码中非零的像素区域计算平均值。如果不提供掩码,函数将对整个图像计算。

返回值:

返回一个 cv::Scalar 类型的对象,其包含图像的平均值。

  • 对于单通道图像,cv::Scalar 的第一个元素就是该通道的平均值;
  • 对于多通道图像,每个通道的平均值分别存储在 cv::Scalar 的各个分量中。

例如:

  • 对于灰度图像(单通道),返回的 cv::Scalar 是一个包含单个元素的标量,表示图像的灰度平均值。
  • 对于 RGB 图像(3 通道),返回的 cv::Scalar 是一个包含三个元素的标量,分别表示 B、G、R 通道的平均值。


2. 示例

2.1 计算灰度图像的平均值

cv::Mat gray = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
cv::Scalar meanVal = cv::mean(gray);
std::cout << "Average intensity: " << meanVal[0] << std::endl;

在这个例子中,cv::mean(gray) 计算灰度图像的所有像素的平均灰度值。


2.2 计算彩色图像的每个通道的平均值

cv::Mat img = cv::imread("image.jpg");
cv::Scalar meanVal = cv::mean(img);
std::cout << "B: " << meanVal[0] << " G: " << meanVal[1] << " R: " << meanVal[2] << std::endl;

对于一个彩色图像,meanVal[0] 是蓝色通道的平均值,meanVal[1] 是绿色通道的平均值,meanVal[2] 是红色通道的平均值。


2.3 带掩码的平均值计算

cv::Mat img = cv::imread("image.jpg");
cv::Mat mask = cv::imread("mask.png", cv::IMREAD_GRAYSCALE);  // 使用二值掩码
cv::Scalar meanVal = cv::mean(img, mask);
std::cout << "B: " << meanVal[0] << " G: " << meanVal[1] << " R: " << meanVal[2] << std::endl;

在这个例子中,mask 指定图像中感兴趣的区域,只有掩码为非零的像素参与平均值计算。



总结

  • cv::mean() 可以快速计算图像或感兴趣区域的平均值。
  • 对于多通道图像,返回值 cv::Scalar 的每个分量对应每个通道的平均值。
  • 支持使用掩码计算平均值,以处理图像的特定区域。

通过使用 cv::mean(),你可以方便地获取图像的全局或局部亮度信息或其他统计特性。



标签:平均值,OpenCV,Scalar,图像,掩码,cv,mean
From: https://www.cnblogs.com/keye/p/18433579

相关文章

  • 赋能未来工厂:EasyCVR视频平台助力装备制造业迈向智能制造
    一、方案背景随着信息技术的飞速发展,装备制造业作为国民经济的支柱产业,正面临着智能化转型的迫切需求。为了提升生产效率、保障设备安全、优化管理流程,装备制造业迫切需要引入先进的视频监控与人工智能技术。EasyCVR视频平台凭借其强大的视频汇聚、智能分析和管理能力,为装备制造......
  • ShiftAddAug:基于乘法算子训练的最新无乘法网络方案 | CVPR'24
    不包含乘法的运算符,如移位和加法,因其与硬件的兼容性而日益受到重视。然而,采用这些运算符的神经网络(NNs)通常表现出比具有相同结构的传统NNs更低的准确性。ShiftAddAug利用成本较高的乘法来增强高效但功能较弱的无乘法运算符,从而在没有任何推理开销的情况下提高性能。将一个ShiftAd......
  • EfficientViT(2023CVPR):具有级联组注意力的内存高效视觉Transformer!
    EfficientViT:MemoryEfficientVisionTransformerwithCascadedGroupAttentionEfficientViT:具有级联组注意力的内存高效视觉Transformer万文长字,请耐心观看~论文地址:https://arxiv.org/abs/2305.07027代码地址:Cream/EfficientViTatmain·microsoft/Cream......
  • 综合实验1 利用OpenCV统计物体数量
    一、实验简介传统的计数方法常依赖于人眼目视计数,不仅计数效率低,且容易计数错误。通常现实中的对象不会完美地分开,需要通过进一步的图像处理将对象分开并计数。本实验巩固对OpenCV的基础操作的使用,适当的增加OpenCV在图像处理方向的进阶操作,例如利用canny算子等算法进行图像分......
  • 解决 ModuleNotFoundError: No module named ‘cv2‘?
    前言解决ModuleNotFoundError:Nomodulenamed‘cv2’?ModuleNotFoundError:Nomodulenamed‘cv2’?1.安装opencv-python:pipinstallopencv-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple/2.出现错误ERROR:Couldnotbuildwheelsforopencv-python......
  • WINCCV7.5SP2使用VBA一次性添加多个IO域控件,并设置属性和其连接的变量
    这篇博客发表在某浪上,截至目前还没有通过审查,在这里也发一遍。前面的练习是先在页面手工放置IO域,然后使用VBA脚本批量设置连接的变量。这个练习进一步,使用VBA脚本创建IO域控件,并设置连接的变量。这个练习自动创建20个IO域,名字叫做IO1至IO20,并设置其连接的变量,为Real1至Real20;IO域......
  • WINCCV7.5SP2使用VBA一次性修改多个IO域连接的变量
    某浪博客那边效率低下,学习笔记类型的也要审核多日,还做了访问量清零的事情。我把今天的学习笔记在这里也记录一遍。前几天QQ群里面有哥们询问在WINCC中页面中一次性设定多个IO域连接变量,这些连接变量有规律。我以前没有用过VBA,尝试着弄了一下,现在把过程记录下来,当作学习笔记吧。......
  • 登高不系安全带自动识别 Opencv
    登高不系安全带自动识别系统具有以下优势:登高不系安全带自动识别系统通过智能监控摄像头对登高作业人员进行实时监测,准确捕捉是否佩戴安全带的情况。登高不系安全带自动识别采用先进的图像处理和分析技术,能够自动检测和识别登高作业人员是否佩戴安全带,过滤其他类似物体的干扰。登高......
  • 视频监控人员行为识别 Opencv
    视频监控人员行为识别技术基于先进的计算机视觉和深度学习算法。视频监控人员行为识别利用大量的视频数据进行模型训练,使算法能够学习和识别员工的不同行为特征。然后,将训练好的模型应用到实际的监控系统中,对员工的行为进行实时监测和分析。视频监控人员行为识别通过视频监控AI算法......
  • 工厂人员作业现场异常违规行为识别 Opencv
    工厂人员作业现场异常违规行为识别告警系统具有以下优势:工厂人员作业现场异常违规行为识别通过应用先进的图像识别技术,系统能够对工厂人员的作业行为进行高精度识别,包括电力作业过程中的关键节点和动作。工厂人员作业现场异常违规行为识别一旦系统识别到违规不符合要求的作业行为,将......