本系列代码托管于: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中的
评论 (0)