在做pyqt5編程的時候,需要用QLable顯示圖片,QLable可以直接顯示QPixmap讀取的圖片,但是顯示numpy模塊讀取的圖片時,需要做如下轉換:
def load_image(self,resize_height, resize_width,normalization=False):
'''
讀取圖片數據,默認返回的是uint8,[0,255]
:param resize_height:
:param resize_width:
:param normalization:是否歸一化到[0.,1.0]
:return: 返回的圖片數據
'''
bgr_image = cv2.imread(self.path)
if len(bgr_image.shape) == 2: # 若是灰度圖則轉爲三通道
print("Warning:gray image", self.path)
bgr_image = cv2.cvtColor(bgr_image, cv2.COLOR_GRAY2BGR)
self.rgb_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2RGB) # 將BGR轉爲RGB
# show_image(filename,rgb_image)
# rgb_image=Image.open(filename)
if resize_height > 0 and resize_width > 0:
self.rgb_image = cv2.resize(self.rgb_image, (resize_width, resize_height))
self.rgb_image = np.asanyarray(self.rgb_image)
if normalization:
# 不能寫成:rgb_image=rgb_image/255
self.rgb_image = self.rgb_image / 255.0
# show_image("src resize image",image)
return self.rgb_image
#顯示圖片
def show_image(self):
index = self.image_list.currentRow()
#加載rgb圖片
rgb_image = self.images[index].load_image(self.pannel_height, self.pannel_width)
label_image = QImage(rgb_image.data, rgb_image.shape[1], rgb_image.shape[0], QImage.Format_RGB888)#轉化爲QImage
self.image_pannel.setPixmap(QPixmap(label_image))#設置顯示圖片