在opencv中得到一个Pixel的Y值[Ycbcr]

时间:2013-01-07 11:12:47

标签: c++ opencv

我正在尝试从Ycbcr颜色模式的帧中获取像素的Y值。 这就是我写的:

 cv::Mat frame, Ycbcrframe, helpframe;
 ........ 
cvtColor(frame,yCbCrFrame,CV_RGB2YCrCb); // converting to Ycbcr
Vec3b intensity =yCbCrFrame.at<uchar>(YPoint);
uchar yv  = intensity.val[0]; //  I thought it's my Y value but its not, coz he gives me I think the Blue channel of RGB color space 

任何想法如何正确地做到这一点

2 个答案:

答案 0 :(得分:1)

以下代码怎么样?

Vec3f Y_pix = YCbCrframe.at<Vec3f>(rows, cols);
int pixelval = Y_pix[0];

(P.S。我还没试过)

答案 1 :(得分:0)

您需要提前了解深度(通道样本的数字格式和精度)以及通道数(通常为3,但也可以是1(单色)或4(含有alpha))。

对于3通道,8位无符号整数(a.k.a。字节或uchar)像素格式,可以使用

访问每个像素
mat8UC3.at<cv::Vec3b>(pt);