轉載:https://www.cnblogs.com/darkknightzh/p/6039667.html
由於系統缺少某些庫,導致cv2.imshow()無法使用,於是使用matplotlib.pyplot.imshow()代替,但是在使用時發現plt.imshow()顯示的圖片顏色有問題。
原圖:
from matplotlib import pyplot as plt import cv2 import numpy as np img = cv2.imread('XXX') plt.imshow(img)
- 1
- 2
- 3
- 4
- 5
明顯看出顏色有問題。網上查找發現原來是cv2讀取的問題:
使用cv2.imread()接口讀圖像,讀進來的是BGR格式以及【0~255】。所以只要將img轉換為RGB格式顯示即可:
img_2 = img[:,:,[2,1,0]] plt.imshow(img_2)
- 1
- 2
也正是由於這個原因,在使用pycaffe做識別時需要轉換通道:
image = caffe.io.load_image(image_file) #加載圖片
使用caffe.io.load_image()讀取進來的是RGB格式和【0~1】(float),所以在進行識別之前要在transformer中設置transformer.set_raw_scale(‘data’,255)(縮放至0~255),以及transformer.set_channel_swap(‘data’,(2,1,0))(將RGB變換到BGR,因為訓練時用cv2讀取的圖片是BGR的,測試需要和訓練一致)