2

当我将图像转换为YUVfromRGB时,我尝试打印像素时无法获得 Y 值。我得到一个值377,当我用整数转换它时,我得到 255。我认为这是不正确的。是否有更好的方法或更正确的方法来打印 YUV 图像像素的值。

实际上,我正在评估价值观(int)src.at<Vec3b>(j,i).val[0]= 255src.at<Vec3b>(j,i).val[0] = 377

同样在该注释中,Y 是根据注释计算的 RGB 与一些常数的组合。我实际上对如何获得 Y 的值感到困惑。

4

1 回答 1

1

这是 OpenCV 的问题。OpenCV 不能优雅地处理(缩放)YUV 或 HSV 颜色空间的uchar格式。有了Vec3b你有效的 3-channel uchar,范围为 [0;255]。

解决方案是使用另一种矩阵类型。有了cv::Mat3f一个 3 通道浮点图像。然后这些值将通过cvtColor函数正确转换。您可以通过分配从 Mat3b 获得 Mat3f。

如果 cvtColor 支持,另一种使用较少内存的解决方案可能是 Mat3s 和 Mat3w 类型。

于 2013-05-14T14:06:14.970 回答