Image open和show默认读取通道顺序RGB
#导入需要的包
from PIL import Image
import numpy as np
import cv2
import matplotlib.pyplot as plt
#读入图片
im = Image.open('1_1.png')
im.show()
#此时im是PIL类型,颜色通道是RGB im <PIL.PngImagePlugin.PngImageFile image mode=RGB size=768x768 at 0x257BDB16A58>
#将im的PIL类型改为numpy,一个矩阵想要生成图片时,其类型必须是uint8
im = np.array(im, dtype=np.unit8)
#或im = np.array(im).astype(np.uint8)
cv2. read默认读取通道顺序是BGR,而非RGB,彩色字体教程参见Link
但是读入BGR不影响 cv2. imshow,cv2. imshow 依旧是RGB
im = cv2.imread('1_1.png')
cv2.imshow('image', im)
cv2.waitKey()
cv2.destroyAllWindows()
Image.open读入的通道顺序是RGB
cv2.imshow()读入的通道顺序是BGR
因此最终显示图像异常
im = Image.open('1_1.png')
im = np.array(im).astype(np.uint8)
cv2.imshow('PIL_cv BGR', im)
cv2.waitKey()
结果展示
cv2.read读入的通道顺序是BGR
plt读入的通道顺序是RGB
因此最终显示图像异常
im = cv2.imread('1_1.png')
im = np.array(im).astype(np.uint8)
plt.imshow(im)
plt.title("cv_plt BGR")
plt.show()
1.用Image. open读取 cv2.imshow()展示,改进方法
从输入的角度
将读入的RGB换序为BGR
cv2.imshow() ‘负负得正’,最终显示RGB
im = Image.open('1_1.png')
im = np.array(im).astype(np.uint8)[:, :, ::-1]
#或者im = np.array(im).astype(np.uint8)[:, :, [2, 1, 0]]
cv2.imshow('PIL_cv RGB', im)
cv2.waitKey()
结果展示
从输出的角度
原来的输出是BGR,将其改为RGB
im = Image.open('1_1.png')
im = np.array(im).astype(np.uint8)
cv2.imshow('PIL_cv RGB', im[:, :, ::-1])
#或cv2.imshow('PIL_cv RGB', im[:, :, [2, 1, 0]])
cv2.waitKey()
2.用cv2.read读取 plt.imshow()展示,改进方法
从输入的角度
将读入的BGR换序为RGB
im = cv2.imread('1_1.png')
im = np.array(im).astype(np.uint8)[:, :, ::-1]
#或im = np.array(im).astype(np.uint8)[:, :, [2, 1, 0]]
plt.imshow(im)
plt.show()
im = cv2.imread('1_1.png')
im = np.array(im).astype(np.uint8)
plt.imshow(image[:, :, ::-1])
#或plt.imshow(image[:, :, [2, 1, 0]])
plt.show()