opencv求取图片各通道均值的两种函数方法

mean 只求均值,输入Mat,返回Scalar,相比 meanStdDev速度更快。

meanStdDev同时求取均值和方差,速度慢一点。第一个参数是Mat类图片,第二个参数是存放计算好的各通道均值,为一个Mat。

第三个参数是存放计算好的各通道标准差,也为一个Mat。

例1:

#include <stdio.h>
#include <opencv2/core.hpp>     // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2/imgproc.hpp>  // Gaussian Blur
#include <opencv2/highgui.hpp>  
#include <opencv2/opencv.hpp>
#include <string>

using namespace std;
using namespace cv;

int main()
{
	Mat image = imread("mark_1.jpg");
	if (image.data == 0)
	{
		cout << "发生读取错误" << endl;
	}	
	DWORD start1 = ::GetTickCount64();//计时器1
	cv:Scalar tempVal;
	for (int i = 0; i < 200; i++)
	{

		tempVal = cv::mean(image);
	}

	printf("mean B通道均值为:%lf G通道均值为:%f R通道均值为:%f \n", tempVal.val[0], tempVal.val[1], tempVal.val[2]);
	DWORD end1 = ::GetTickCount64();
	cout << "mean图片处理用时:" << (end1 - start1) << "ms\n";

	DWORD start2 = ::GetTickCount64();//计时器2
	Mat  mean, stddev;
	for (int i = 0; i < 200; i++)
	{

		meanStdDev(image, mean, stddev);
	}
	printf("B通道均值为:%lf G通道均值为:%lf R通道均值为:%lf \n", mean.at<double>(0, 0), mean.at<double>(1, 0), mean.at<double>(2, 0));
	DWORD end2 = ::GetTickCount64();
	cout << "meanStdDev图片处理用时:" << (end2 - start2) << "ms\n";

	return 0;
	system("pause");
}

运行结果:

例一运行结果

例2:

没有计时器对比

#include <stdio.h>
#include <opencv2/core.hpp>     // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2/imgproc.hpp>  // Gaussian Blur
#include <opencv2/highgui.hpp>  
#include <opencv2/opencv.hpp>
#include <string>


using namespace std;
using namespace cv;

int main()
{
	Mat image = imread("E:\\projects\\ThreadSecond\\data\\3_2_shineiguangpicROI\\mark_1.jpg");
	if (image.data == 0)
	{
		cout << "发生读取错误" << endl;
	}	
	cv:Scalar tempVal = cv::mean(image);
	printf("mean B通道均值为:%lf G通道均值为:%f R通道均值为:%f \n", tempVal.val[0], tempVal.val[1], tempVal.val[2]);
		
	Mat  mean, stddev;
	meanStdDev(image, mean, stddev);
	printf("B通道均值为:%lf G通道均值为:%lf R通道均值为:%lf \n", mean.at<double>(0, 0), mean.at<double>(1, 0), mean.at<double>(2, 0));	
	return 0;
	system("pause");
}

运行结果:

例2运行结果

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

travel_with_hope

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值