pyqt 5ノート——QLableはcv 2の読み取ったピクチャーを表示します

1623 ワード

pyqt 5のプログラミングを行う場合、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))#