昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 974|回复: 0
收起左侧

利用OpenCV的函数mean()和meanStdDev()计算图像的均值和标准差

[复制链接]

239

主题

241

帖子

931

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
931
昊虹君 发表于 2022-11-27 22:08 | 显示全部楼层 |阅读模式
利用OpenCV的函数mean()和meanStdDev()计算图像的均值和标准差

函数mean()的原型和介绍如下:

                                          


函数meanStdDev()的原型和介绍如下:

                                          


可见,这两个函数的使用是很简单的。
关键是大家在求矩阵或图像的均值或均值时能想到这两个函数。

C++示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

	cv::Mat A1 = (cv::Mat_<uchar>(3, 3) << 1, 2, 3,
		4, 5, 6,
		7, 8, 9);

	cout << "A1中的数据为:\n" << A1 << endl << endl;

	cv::Scalar A1_mean;

	A1_mean = mean(A1);

	cout << "通过函数mean计算得到的A1的均值为:" << A1_mean << endl << endl;

	cv::Scalar A1_mean_2, A1_sd;
	meanStdDev(A1, A1_mean_2, A1_sd);

	cout << "通过函数meanStdDev计算得到的A1的均值为:" << A1_mean_2 << endl << endl;
	cout << "通过函数meanStdDev计算得到的A1的标准差为:" << A1_sd << endl << endl;

	return(0);
}

如果对代码中的 cv::Scalar 不清楚,可以参考我的另一篇博文:
https://www.hhai.cc/thread-144-1-1.html
运行结果如下:


Python示例代码如下:
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术

# 博主微信/QQ 2487872782
# QQ群 271891601
# 欢迎技术交流与咨询

# OpenCV的版本为4.4.0

import numpy as np
import cv2 as cv

if __name__ == '__main__':
    A1 = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]], dtype='int8')

    # 用函数mean()求A1的均值
    A1_mean_1 = cv.mean(A1)

    # 用函数meanStdDev()求A1的均值和标准差
    A1_mean_2, A1_sd = cv.meanStdDev(A1)

运行结果如下:


图像均值和均方差的一个具体应用,可以参见博文“尺寸相同的两幅图像的两个相似度评价指标-PSNR和SSIM,链接https://www.hhai.cc/thread-148-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2024076726 )

GMT+8, 2024-5-17 06:37 , Processed in 0.026090 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表