gpt4 book ai didi

python - opencv python将图像读取为RGB

转载 作者:行者123 更新时间:2023-12-02 16:13:54 26 4
gpt4 key购买 nike

是否可以将 opencv(使用 python)作为默认读取图像作为 RGB 的顺序?在 opencv 文档中 imread 方法以 BGR 的顺序返回图像,但在代码中 imread 方法以 RGB 顺序返回图像?我没有做任何转换过程。刚刚使用 imread 方法并显示在屏幕上。它在 Windows 图像查看器上显示。
是否可以 ?

编辑 1:
我的代码在下面。左侧 cv.imshow() 方法和另一个 plt.imshow() 方法。

cv2.imshow() 方法将图像显示为 RGB,plt 将其显示为 opencv 读取 (BGR) 图像。

image_file = 'image/512-2-1001-18-RGB.jpg'
# img = imp.get_image(image_file)

img = cv2.imread(image_file)
plt.imshow(img)
plt.show()

cv2.imshow('asd', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

enter image description here

编辑 2:
opencv imshow 方法如何将图像显示为 RGB
下面我附上了图像的第一个像素值,下一张图像是 photoshop 像素值

enter image description here

enter image description here

编辑 3:
下面只是读取图像和 imshow 和第二个图像是原始 RGB 图像。

在 imshow 方法图像看起来与原始图像相同后,这让我很困惑

enter image description here

按RGB顺序的原始图像。

enter image description here

最佳答案

OpenCV 本身是完全一致的。它使用 BGR 顺序的 channel 将图像读入 Numpy 数组,以 BGR 顺序保持图像,其 cv2.imshow()cv2.imwrite() 也期望图像按 BGR 顺序。您所有的 JPEG/PNG/BMP/TIFF 文件在磁​​盘上保持其正常的 RGB 顺序。

其他库,例如 PIL/Pillow scikit-image matplotlib pyvips 将图像以常规 RGB 顺序存储在内存中。

因此,如果将 OpenCV 与任何其他库混合使用,只会出现颜色问题。如果您从/到 OpenCV 从任何其他人,您将需要颠倒 channel 顺序。无论哪种方式都是相同的过程,您正在交换第一个和第三个 channel :

RGBimage = BGRimage[...,::-1]

或者
BGRimage = RGBimage[...,::-1]

或者,您可以使用 OpenCV cvtColor() 进行转换:
RGBimage = cv2.cvtColor(BGRimage, cv2.COLOR_BGR2RGB)

您不必每次都在新变量中制作完整副本。假设您使用 OpenCV 读取图像,显然按照 OpenCV BGR 顺序,并且您想用 matplotlib 简单地显示它,您可以在传递它时反转 channel :
# Load image with OpenCV and process in BGR order
im = cv2.imread(something)

# Briefly display with matplotlib, which will want RGB order
plt.imshow(img[...,::-1])
plt.show()

# Carry on processing in BGR order with OpenCV
...

关于python - opencv python将图像读取为RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61500121/

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