我正在尝试从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
任何想法如何正确地做到这一点
答案 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);