【问题标题】:How to check whether my image is RGB format or BGR format in python? How do i convert them and viceversa?如何在python中检查我的图像是RGB格式还是BGR格式?我如何转换它们,反之亦然?
【发布时间】:2020-01-03 15:54:46
【问题描述】:

我正在对 OpenVino 模型中的预训练数据进行一些预处理。 它说它只使用 BGR 格式的图像。

这里, 如何在 python 中检查我的图像是 BGR 格式还是 RBG 格式?

我加载的图片代码是

import cv2
import numpy as np
from PIL import Image

image = cv2.imread('29101878_988024658021087_5045014614769664000_o.jpg')
print(image.shape)

给出的输出 形状(973,772,3)

我如何检查图像是 RBG 还是 BGR 格式? 如果是 RBG 格式,如何将其转换为 BGR,反之亦然?

【问题讨论】:

  • 如果您使用 OpenCV 读取图像或视频,它将是 BGR。几乎所有其他东西(PIL/Pillow、skimage、CImg、ImageMagick、SciPy、NumPy、vips、GD)都使用 RGB。

标签: python python-3.x python-imaging-library cv2


【解决方案1】:

当你使用 opencv (imread, VideoCapture) 时,图像被加载到 BGR 颜色空间中。

参考: Note: In the case of color images, the decoded images will have the channels stored in B G R order.

链接: https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#imread)

要转换你可以使用

rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

反之亦然。

【讨论】:

  • cv2.imread()会自动将RGB格式的图片转成BGR,而matplotlib.image mpimg会自动转成RGB吗?
  • 嘿@razzOn2bull,我这里没有太多上下文。但由于默认的最终图像将是 BGR,我认为 cv2.imread() 将图像从任何格式转换为 BGR。
  • @razzOn2bull:我认为这个答案的主要内容是“阅读文档”。
  • 谢谢 :) @martineau 知道了。有些文章说 opencv 总是将图像转换为 bgr 格式,我们可以将其更改为使用 cv2.COLOR_BGR2RBG 格式。当我显示 bgr 和 rbg 图像时,我还使用了 cv2.COLOR_RGB2BGR 。 bgr 显示相当蓝色的图像,而 rbg 显示良好的图像。但是当导入一些图像时 image = cv2.imread('29101878_988024658021087_5045014614769664000_o.jpg') 并使用 cv2.imshow(image) 它的显示像 rbg 图像一样清晰。反正有小直觉
【解决方案2】:

要检查图像是 RGB 还是 BGR 格式,我们可以使用:

import cv2
from PIL import Image

image = cv2.imread('image path')
img = Image.fromarray(image)
img.mode

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 2018-04-03
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多