本系列代码托管于:https://github.com/chintsan-code/opencv4-tutorials

本篇使用的项目为:pixel_statistics

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

using namespace cv;
using namespace std;

int main(int argc, const char** argv) {
	Mat src = imread("../sample/lena512color.bmp");
	if (src.empty()) {
		cout << "could not load image..." << endl;
		return -1;
	}
	double min, max;
	Point minLoc, maxLoc;
	vector<Mat> channels;
	split(src, channels);
	for (int i = 0; i < channels.size(); i++) {
		minMaxLoc(channels[i], &min, &max, &minLoc, &maxLoc, Mat());
		cout << "channel " << i << endl
			<< "min value:" << min << endl
			<< "max value:" << max << endl;
		Mat mean, stddev;
		//meanStdDev(channels[i], mean, stddev);
		//cout << "mean:" << mean << endl
		//	<< "stddev:" << stddev << endl;
		meanStdDev(src, mean, stddev);
		cout << "mean:" << mean.at<double>(i)<< endl
			<< "stddev:" << stddev.at<double>(i) << endl;

		cout << endl;
	}
	return 0;
}

cv::Mat::rows:图像高度

cv::Mat::cols:图像宽度

cv::Mat::channels():图像通道数

minMaxLoc:找到图像中的像素最大值、最小值及其位置。

void minMaxLoc(InputArray src, CV_OUT double* minVal, CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0, CV_OUT Point* maxLoc = 0, InputArray mask = noArray());
  • src:输入,单通道图像。如果是多通道图像,应该先使用split将各个通道分离
  • minVal:指向最小像素值的指针
  • maxVal:指向最大像素值的指针
  • minLoc:指向最小像素位置的指针
  • maxLoc:指向最大像素位置的指针
  • mask:掩模,在mask上找

meanStdDev:找到图像中的像素的均值、标准差。多通道图像有多个值

void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray mask=noArray());
  • src:输入图像。支持1-4通道
  • mean:像素的均值
  • stddev:像素的
  • mask:掩模:计算mask中的