gpt4 book ai didi

python - PIL 到 OpenCV MAT 导致颜色偏移

转载 作者:太空狗 更新时间:2023-10-30 02:13:03 28 4
gpt4 key购买 nike

使用 PIL 和 OpenCV 加载 png 图像时,会出现颜色偏移。黑色和白色保持不变,但棕色变为蓝色。

我不能发布图片,因为这个网站不允许新手发布图片。

代码如下所示,而不是使用 cv.LoadImageM,因为在实际情况下,原始图像是通过 tcp 接收的。

代码如下:

#! /usr/bin/env python
import sys
import cv
import cv2
import numpy as np
import Image
from cStringIO import StringIO

if __name__ == "__main__":
# load raw image from file
f = open('frame_in.png', "rb")
rawImage = f.read()
f.close()

#convert to mat
pilImage = Image.open(StringIO(rawImage));
npImage = np.array(pilImage)
cvImage = cv.fromarray(npImage)

#show it
cv.NamedWindow('display')
cv.MoveWindow('display', 10, 10)
cv.ShowImage('display', cvImage)
cv. WaitKey(0)

cv.SaveImage('frame_out.png', cvImage)

如何解决色偏问题?

最佳答案

OpenCV 的图像具有按 BGR 顺序排列的颜色 channel ,而 PIL 的是 RGB。您需要像这样切换 channel :

import PIL.Image
import cv2

...

image = np.array(pilImage) # Convert PIL Image to numpy/OpenCV image representation
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) # You can use cv2.COLOR_RGBA2BGRA if you are sure you have an alpha channel. You will only have alpha channel if your image format supports transparency.
...

@Krish:感谢您指出错误。上次没来得及测试代码。

希望这对您有所帮助。

关于python - PIL 到 OpenCV MAT 导致颜色偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589373/

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