Python OpenCV:灰度图像的YUV值?
是否可以计算灰度图像的YUV值 我发现了一篇让我困惑的文章:基于耦合映射晶格的交互式图像着色和重新着色。其中,作者提出了一种对图像进行着色和重着色的算法 对于着色,它们为灰度图像着色。用户用所需颜色涂鸦图像的某些区域,该颜色通过算法自动扩散 它们使用Python OpenCV:灰度图像的YUV值?,python,opencv,grayscale,yuv,Python,Opencv,Grayscale,Yuv,是否可以计算灰度图像的YUV值 我发现了一篇让我困惑的文章:基于耦合映射晶格的交互式图像着色和重新着色。其中,作者提出了一种对图像进行着色和重着色的算法 对于着色,它们为灰度图像着色。用户用所需颜色涂鸦图像的某些区域,该颜色通过算法自动扩散 它们使用YUV颜色空间来比较当前像素与其相邻像素之间的Y值。如果邻居的Y值强于当前像素,则将其U和V值设置为邻居的值(攻击者) 我的问题是:如何计算灰度图像中给定像素的YUV值 或者可能是一个更好的问题:在那篇文章中,他们如何比较每个像素的UV值,因为他们在
YUV
颜色空间来比较当前像素与其相邻像素之间的Y
值。如果邻居的Y
值强于当前像素,则将其U
和V
值设置为邻居的值(攻击者)
我的问题是:如何计算灰度图像中给定像素的YUV
值
或者可能是一个更好的问题:在那篇文章中,他们如何比较每个像素的UV值,因为他们在开始时将它们设置为0(灰度)?这是一个三个问题:
cv::Mat1b image;
cv::Mat3b image_BGR, image_YUV;
cv::cvtColor( image, image_BGR, COLOR_GRAY2BGR );
cv::cvtColor( image_BGR, image_YUV, COLOR_BGR2YUV );
这是否回答了您在评论中未完成的问题?(更新我的答案)谢谢。我照你说的做了,但是我注意到我转换到YUV颜色空间的每一个BGR或灰度图像,我从来没有得到YUV值,但总是在我运行
print image\u时得到BGR值,而不是Y
value。这是为什么?灰度图像中的某个像素的值为L。BGR图像中的同一像素的值为(B,G,R)=(L,L,L)。YUV图像中相同像素的Y值也是L。因此,Y=B=L。@beaker已经在上面的评论中解释过了。是的,灰度图像L的YUV值是Y=L;U=0;V=0
。是的,你是对的,这是我从其他论坛得到的答案,非常感谢@beaker@beaker如果是,是否有办法访问灰度图像的U
和V
值(即使它们为空)?例如,在RGB中,我只使用图像[I,j,0]
来访问蓝色通道,但我认为灰度图像只能访问'L'值?答案基本上与我在这里给出的答案相同:除了你想做img_Lzz=cv2.merge((L,z,z))
创建图像的完整、可修改的LUV版本。