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

opencv(C++) 学习笔记 专栏收录该内容
1 篇文章 0 订阅

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
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值