Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我将图像转换为YUVfromRGB时,我尝试打印像素时无法获得 Y 值。我得到一个值377,当我用整数转换它时,我得到 255。我认为这是不正确的。是否有更好的方法或更正确的方法来打印 YUV 图像像素的值。
YUV
RGB
377
实际上,我正在评估价值观(int)src.at<Vec3b>(j,i).val[0]= 255 和src.at<Vec3b>(j,i).val[0] = 377
(int)src.at<Vec3b>(j,i).val[0]= 255
src.at<Vec3b>(j,i).val[0] = 377
同样在该注释中,Y 是根据注释计算的 RGB 与一些常数的组合。我实际上对如何获得 Y 的值感到困惑。
这是 OpenCV 的问题。OpenCV 不能优雅地处理(缩放)YUV 或 HSV 颜色空间的uchar格式。有了Vec3b你有效的 3-channel uchar,范围为 [0;255]。
uchar
Vec3b
解决方案是使用另一种矩阵类型。有了cv::Mat3f一个 3 通道浮点图像。然后这些值将通过cvtColor函数正确转换。您可以通过分配从 Mat3b 获得 Mat3f。
cv::Mat3f
cvtColor
如果 cvtColor 支持,另一种使用较少内存的解决方案可能是 Mat3s 和 Mat3w 类型。