在使用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就是正常的数据对象。可以正常显示。