我将图像从 rgb 转换为 YUV。现在我想单独找到亮度通道的平均值。您能告诉我如何实现这一目标吗?此外,有没有办法确定图像包含多少个通道?
问问题
12780 次
2 回答
16
你可以这样做:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
using namespace cv;
int main(void)
{
vector<Mat> channels;
Mat img = imread("Documents/forest.jpg");
split(img, channels);
Scalar m = mean(channels[0]);
printf("%f\n", m[0]);
return 0;
}
于 2013-01-16T01:45:38.487 回答
3
Image.channels() 将为您提供任何图像中的通道数。请参阅 OpenCV 文档。
可以访问多个通道,如下所示:
img.at<Vec3b>(i,j)[0] //Y
img.at<Vec3b>(i,j)[1] //U
img.at<Vec3b>(i,j)[2] //V
于 2013-01-16T01:23:24.953 回答