在使用Python进行图像显示的时候出现了极为奇怪的问题:
原图像为

经过如下操作:
import numpy as np
from PIL import Image
import cv2
im=Image.open("bee.jpg")
newim=np.array(im)
cv2.imshow('2',newim)显示为:

很明显图像颜色出现了改变,究竟是怎么回事呢?
好的结果就是,在Python中三维数组的1通道为b通道,2通道为g通道,3通道为r通道,但是直接将Image转换为数组是直接将rgb三通道直接放入了123通道,所以喽,出现颜色改变问题。这里提供代码进行改变:
import numpy as np
from PIL import Image
import cv2
im=Image.open("bee.jpg")
newim=np.array(im)
w,h=im.size
new=np.zeros((h,w,3))
for i in range(h):
for j in range(w):
new[i][j][2]=newim[i][j][0]
new[i][j][1]=newim[i][j][1]
new[i][j][0]=newim[i][j][2]
new= np.asarray(new, dtype=np.uint8)最终的new就是正常的数据对象。可以正常显示。
本文探讨了在Python中使用PIL和OpenCV处理图像时遇到的颜色错乱问题,并提供了详细的解决方案,通过调整RGB通道顺序确保图像正确显示。
3339

被折叠的 条评论
为什么被折叠?



