Python OpenCV:灰度图像的YUV值?

Python OpenCV:灰度图像的YUV值?,python,opencv,grayscale,yuv,Python,Opencv,Grayscale,Yuv,是否可以计算灰度图像的YUV值 我发现了一篇让我困惑的文章:基于耦合映射晶格的交互式图像着色和重新着色。其中,作者提出了一种对图像进行着色和重着色的算法 对于着色,它们为灰度图像着色。用户用所需颜色涂鸦图像的某些区域,该颜色通过算法自动扩散 它们使用YUV颜色空间来比较当前像素与其相邻像素之间的Y值。如果邻居的Y值强于当前像素,则将其U和V值设置为邻居的值(攻击者) 我的问题是:如何计算灰度图像中给定像素的YUV值 或者可能是一个更好的问题:在那篇文章中,他们如何比较每个像素的UV值,因为他们在

是否可以计算灰度图像的YUV值

我发现了一篇让我困惑的文章:基于耦合映射晶格的交互式图像着色和重新着色。其中,作者提出了一种对图像进行着色和重着色的算法

对于着色,它们为灰度图像着色。用户用所需颜色涂鸦图像的某些区域,该颜色通过算法自动扩散

它们使用
YUV
颜色空间来比较当前像素与其相邻像素之间的
Y
值。如果邻居的
Y
值强于当前像素,则将其
U
V
值设置为邻居的值(攻击者)

我的问题是:如何计算灰度图像中给定像素的
YUV


或者可能是一个更好的问题:在那篇文章中,他们如何比较每个像素的UV值,因为他们在开始时将它们设置为0(灰度)?

这是一个三个问题:

  • 是否可以计算灰度图像的YUV值

  • 我的问题是:如何计算灰度图像中给定像素的YUV值

    您可以将灰度图像视为RGB图像,然后将其转换为YUV:

    cv::Mat1b image;
    cv::Mat3b image_BGR, image_YUV;
    cv::cvtColor( image, image_BGR, COLOR_GRAY2BGR );
    cv::cvtColor( image_BGR, image_YUV, COLOR_BGR2YUV );
    
  • 或者可能是一个更好的问题:在那篇文章中,他们如何比较每个像素的UV值,因为他们在开始时将它们设置为0(灰度)

    我建议你把这个问题作为一个单独的问题发布(并在论文的PDF中添加一个链接)


  • 这是否回答了您在评论中未完成的问题?(更新我的答案)谢谢。我照你说的做了,但是我注意到我转换到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版本。