gpt4 book ai didi

python - imshow 不需要从 BGR 转换为 RGB

转载 作者:太空狗 更新时间:2023-10-29 17:45:11 30 4
gpt4 key购买 nike

正如我所相信的那样,OpenCV 以 BGR colorspace 顺序读取图像,我们通常必须像这样将其转换回 RGB:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

但是当我尝试简单地读取图像并显示它时,着色看起来不错(无需将 BGR 转换为 RGB):

img_bgr = cv2.imread(image_path)
cv2.imshow('BGR Image',img_bgr)
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
cv2.imshow('RGB Image',img_rgb )
cv2.waitkey(0)

imshow() 是自动更改函数内的顺序(从 BGR 到 RGB)还是一直是 BGR?

最佳答案

BGR 和 RGB 不是颜色空间,它们只是不同颜色 channel 顺序的约定。 cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 不做任何计算(就像转换成 HSV 那样),它只是改变顺序。任何顺序都是有效的——实际上,三个值(红色、绿色和蓝色)堆叠在一起形成一个像素。您可以按照自己喜欢的方式排列它们,只要您告诉显示器您指定的顺序即可。

OpenCV imread, imwriteimshow 确实都是按照BGR顺序工作的,所以读的时候不需要改顺序一张带有 cv2.imread 的图像,然后想用 cv2.imshow 显示它。

虽然在整个 OpenCV 中一致使用 BGR,但大多数其他图像处理库使用 RGB 排序。如果您想使用 matplotlibimshow 但使用 OpenCV 读取图像,则需要将 BGR 转换为 RGB。

关于python - imshow 不需要从 BGR 转换为 RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963283/

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