im试图用python编写代码,以在PyQt5 GUI中的三个单独的标签中呈现图片的RGB通道。我正在通过cv2读取图片,将不需要的通道归零(例如,对于红色通道-我将其复制到一个单独的变量中,并将蓝色通道= 0和绿色通道= 0设置),然后使用拆分/合并反转通道cv2的功能(因为cv2使用[B,G,R]格式而不是[R,G,B]格式),并将结果用于: QPixmap.fromImage(QImage('cv2数组代表单个颜色通道',宽度,高度,QtGui.QImage.Format_RGB888))。
这是奇怪的部分- 1)当图像尺寸均匀时-一切正常。但是,当左侧尺寸为奇数时(例如627X626),我会在红色通道中看到垃圾,但绿色和蓝色可以正常工作。 2)当奇数维在右侧时-我的红色通道很好,但是绿色和蓝色损坏了。 3)当两者的尺寸都不正确时,程序将在以下一行使用以下代码粉碎:以退出代码-1073741819(0xC0000005)完成的过程
这是图像获取的代码:
self.red_scale_img = cv2.imread(file_name)
self.red_scale_img[:, :, 0] = 0
self.red_scale_img[:, :, 1] = 0
b = self.red_scale_img[:, :, 0]
g = self.red_scale_img[:, :, 1]
r = self.red_scale_img[:, :, 2]
self.red_scale_img = cv2.merge([r, g, b])
self.green_scale_img = cv2.imread(file_name)
self.green_scale_img[:, :, 0] = 0
self.green_scale_img[:, :, 2] = 0
self.blue_scale_img = cv2.imread(file_name)
self.blue_scale_img[:, :, 1] = 0
self.blue_scale_img[:, :, 2] = 0
# the switching between red and blue scales
b = self.blue_scale_img[:, :, 0]
g = self.blue_scale_img[:, :, 1]
r = self.blue_scale_img[:, :, 2]
self.blue_scale_img = cv2.merge([r, g, b])
这是当图像尺寸为627X627时程序会在其中压缩的行:
red_scale_image = QPixmap.fromImage(QImage(new_image_obj.red_scale_img, new_image_obj.red_scale_img.shape[1], new_image_obj.red_scale_img.shape[0], QtGui.QImage.Format_RGB888)).scaled(int(self.image_height/3.1746), int(self.image_width/3.1746))