#include<opencv2/opencv.hpp> #include<iostream> #include <vector> int main(int argc, char** argv) { cv::Mat src(5, 4, CV_8UC3, cv::Scalar(10, 20, 30)); std::cerr << src << std::endl; cv::Scalar junzi = cv::mean(src); //计算各个通道的均值 float v1 = junzi.val[0]; //返回第一个通道的均值 std::cerr << "第一通道的均值=" << v1<<std::endl; float v2 = junzi.val[1]; //返回第二个通道的均值 std::cerr << "第二通道的均值=" << v2 << std::endl; float v3 = junzi.val[2]; //返回第三个通道的均值 std::cerr << "第三通道的均值=" << v3 << std::endl; cv::waitKey(0); return 0; }
比如:cv::Scalar mean = cv::mean(image, mask);
mask是与iamge一样大小的矩阵,其中的数值为0或者1,为1的地方,计算出image中所有元素的均值,为0 的地方,不计算