QImage-处理完成,退出代码-1073741819(0xC0000005)

时间:2018-08-10 14:22:47

标签: python pyqt5

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))

0 个答案:

没有答案