gpt4 book ai didi

python - 为什么将 U 和 V channel 设置为 0 会导致显示蓝色图片?

转载 作者:行者123 更新时间:2023-12-02 17:48:28 27 4
gpt4 key购买 nike

我做了什么:

  • 我读取了 BGR 图像并将其转换为 YUV 颜色空间。
  • 然后我将它的 U 和 V channel 设置为 0
  • 我显示图像,我看到它都是蓝色的(好像我将 R 和 B 设置为 0,而不是)

  • 问题:
  • 为什么将 U 和 V 值设置为 0 会导致图片的 G 和 R channel 也设置为 0?
  • 为什么图像显示为蓝色(BGR 颜色空间)而不是 YUV 颜色空间?

  • 代码:
    import cv2
    import numpy as np

    img=cv2.imread('rgb_pic.png')
    yuv_img=cv2.cvtColor(img,cv2.COLOR_BGR2YUV)
    cv2.imwrite('yuv_pic',yuv_img)

    cv2.namedWindow('YUV',cv2.WINDOW_AUTOSIZE)
    cv2.imshow('YUV',yuv_img) # Displayed image is YUV, that is ok
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    im=yuv_img # Copy the YUV image to an other one
    for in in range(im.shape[0]):
    for j in range(im.shape[1]):
    im[i,j,1]=0 # Set U to 0
    im[i,j,2]=0 # Set V to 0

    # Display im
    cv2.namedWindow('Result',cv2.WINDOW_AUTOSIZE)
    cv2.imshow('Result',im) # Displayed image is totally BLUE :(
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    结果: yuv_img像这样显示(这是正常结果,我所期望的):
    enter image description here im像这样显示(我不明白为什么它是蓝色的):
    enter image description here

    最佳答案

    这是因为imshow等待 BGR 格式的输入图像(OpenCV 假设第一个 channel (现在是 Y)为蓝色)。好吧,您将第二个和第三个 channel 设置为零 => 只有第一个 channel 将包含非零元素,因此只有蓝色 channel 参与可视化。

    关于python - 为什么将 U 和 V channel 设置为 0 会导致显示蓝色图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983190/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com