cv2.mean() 用于计算图像的像素值的平均值

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

函数定义 :

Scalar cv::mean(InputArray src, InputArray mask = noArray());

src: 输入图像或矩阵,类型可以是多通道或单通道图像。

mask: (可选)掩码图像,它是一个8位单通道的二值图像。如果提供掩码,则只对掩码中非零的像素区域计算平均值。如果不提供掩码,函数将对整个图像计算。

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

1)单通道图像,cv::Scalar 前3个元素相等,表示图像灰度的平均值,第4个为0。

2)3通道图像,cv::Scalar 4个元素,分别为蓝色B、绿色G、红色R通道的均值,第4个为0(Alpha或者填充0)。

3)4通道图像(BGRA),cv::Scalar 4个元素,分别为蓝色B、绿色G、红色R通道的均值,Alpha通道的均值。

例如:

对于灰度图像(单通道),返回的 cv::Scalar 是一个包含单个元素的标量,表示图像的灰度平均值。

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

1.Python实例:

1)计算灰度图像的每个通道的平均值

python 复制代码
import cv2 

# 读取图像:image.jpg为灰度图像,或者彩色转为灰度图像
image = cv2.imread('image.jpg')

# 计算整个图像的平均值、标准差、最小值和最大值
mean_val = cv2.mean(image)
print("平均值:", mean_val[0])  # 对于灰度图,直接使用 mean_val[0]
print("标准差:", mean_val[1])  # 对于灰度图,直接使用 mean_val[1]
print("最小值:", mean_val[2])  # 对于灰度图,直接使用 mean_val[2]
print("最大值:", mean_val[3])  # 对于灰度图,直接使用 mean_val[3]

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

python 复制代码
import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 分离颜色通道
b, g, r = cv2.split(image)

# 计算每个通道的均值
mean_b = cv2.mean(b)[0]
mean_g = cv2.mean(g)[0]
mean_r = cv2.mean(r)[0]

print(f'Blue mean: {mean_b}')
print(f'Green mean: {mean_g}')
print(f'Red mean: {mean_r}')

2.C++实例:

1)计算灰度图像的每个通道的平均值

cpp 复制代码
// 方法1:
//cv::Mat gray = cv::imread("img.jpg", cv::IMREAD_GRAYSCALE);

// 方法1:
cv::Mat gray;
cv::Mat image = cv::imread("img.jpg" );
cout << "输入图像大小image.size: " << image.size() << std::endl;
cout << "输入图像通道image.channels = " << image.channels() << endl;
if (image.channels() > 1)               // 通道 > 1 ,则需要转为灰度图像; = 1表示是灰度图像,不需要转换 。
{
	cvtColor(image, gray, COLOR_RGB2GRAY); 
}
cout << "灰度图像通道gray.channels = " << gray.channels() << endl;

cv::Scalar meanVal = cv::mean(gray);
std::cout << "图像平均灰度值Average intensity: " << meanVal[0] << std::endl;
// 计算整个图像的平均值、标准差、最小值和最大值
cout << "meanVal: " << meanVal<< std::endl;

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

cpp 复制代码
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] 是红色通道的平均值。
相关推荐
启雀AI20 分钟前
AI 驱动的视频课程自动摘要与知识点提取:ASR + LLM 流水线工程实践
人工智能·阿里云·华为云·音视频·培训saas平台
Mac的实验室21 分钟前
2026年8月最新实操:谷歌Gmail邮箱手机号注册扫码发短信提示“无法验证”怎么办?(附100%成功绕过指南)
人工智能
MindUp39 分钟前
AI辅助PPT生成工具的内容组织能力实测:8款产品的文档解析与排版效果对比
人工智能
寒草43 分钟前
【寒草呈献】当巴菲特走进 AI 投研助手
人工智能·架构
fthux1 小时前
装闭 RenoPit 源码解析(06):SSE如何实时推送AI装修分析进度
人工智能·ai·开源·github·open source·renopit
AI备案指南-满满1 小时前
大模型与算法备案全流程详解:从零到通过的完整指南
人工智能·算法·备案·大模型备案·算法备案
江畔柳前堤1 小时前
LLM 训练核心机制深度解析:Warmup、Cosine Decay 与 Perplexity 的完整知识体系
网络·人工智能·深度学习·算法·机器学习·语音识别
龙虾PRO1 小时前
把握人工智能时代机遇,夯实科技强国建设根基
人工智能·科技·百度
冬奇Lab2 小时前
企业知识库系列(00):在写第一行代码之前,先把评测数据集做好
人工智能
二川bro2 小时前
Obsidian+AI自生长知识库,告别无效笔记整理
人工智能