from PIL import Image
import numpy as np
im = Image.open("img.png")
#方法一:使用PIL库显示图片
a = np.array(im)
im=Image.fromarray(a)
im.show()
import matplotlib.pyplot as plt
#方法二:使用matplotlib库显示图片
plt.imshow(a)
plt.show()
#方法三:使用opencv库显示图片
import cv2
cv2.imshow("img",a)#显示图片
cv2.waitKey(0)#等待按键按下
cv2.destroyAllWindows()#关闭窗口
cv2.imshow("img",a)
显示的照片颜色不对,可能是由于cv2
和plt
读取图像时的像素格式不一致导致的。cv2
读取的图像格式是BGR
(蓝、绿、红),而plt
读取的图像格式是RGB
(红、绿、蓝)。
解决这个问题有以下几种方法:
- 方法一:使用
cv2
的cvtColor
函数将图像的颜色通道顺序转换为RGB
。可以使用以下代码将cv2
读取的图像转换为RGB
格式:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
- 方法二:如果坚持使用
cv2.imread
读取图像,plt.imshow
显示图像,可以利用原理来解决。cv2
读取的是BGR
,那么把它转化成顺序为RGB
的格式,就可以用plt.imshow
显示成正确的颜色。可以使用以下代码将BGR
格式的图像转换为RGB
格式:
b,g,r = cv2.split(image)
image_rgb = cv2.merge((r,g,b))
- 方法三:使用对应的读取与显示图像方式。可以使用
matplotlib.image
的imread
函数读取图像,然后使用plt.imshow
显示图像。或者使用cv2.imread
读取图像,然后使用cv2.imshow
显示图像。
这些方法可以解决cv2.imshow("img",a)
显示的照片颜色不对的问题。根据你的具体需求和代码环境,选择适合的方法即可。