Pyqt QImage 与 np array 转换

项目使用Pyqt作为UI框架,使用相机线程捕捉image,并在QGraphicsView中显示,遇到以下问题:
1 采集的数据为nparray数据,需转换为QImage 转换代码如下:
img=cv2.resize(src=img,dsize=None,fx=0.2,fy=0.2)
img2=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
self._image = QtGui.QImage(img2[:],img2.shape[1], img2.shape[0],img2.shape[1] * 3, QtGui.QImage.Format_RGB888)
注意:QImage(uchar * data, int width, int height, int bytesPerLine, Format format) 中的bytesPerLine 参数不能省略,负责造成Qimage数据错误,显示图片不正常,此参数设置为image的width*image.channels

2 采集数据的线程为非UI线程,则在QGraphicsView中显示时不仅需要添加Item对象,并且更新显示线程需在UI线程中,否则QGraphicsView不会主动更新显示,使用信号将image放到UI线程中更新即可

3 保证在UI更新时,所需更新的image还未被销毁,由于处于不同的线程,所以image可存储于更新前不会被销毁的对象中

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于引用[1]和引用提供的信息,可以使用PyQt完成手写数字识别。以下是一个基于深度学习神经网络和PyQt5的GUI可视化手写数字识别小程序的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QFileDialog from PyQt5.QtGui import QPixmap from PyQt5.QtCore import Qt from PIL import Image import numpy as np import tensorflow as tf # 加载训练好的模型 model = tf.keras.models.load_model('model.h5') class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("手写数字识别") self.setGeometry(100, 100, 400, 400) self.label = QLabel(self) self.label.setAlignment(Qt.AlignCenter) self.label.setText("请在下方选择一张手写数字图片进行识别") self.setCentralWidget(self.label) self.button = QPushButton("选择图片", self) self.button.setGeometry(150, 300, 100, 30) self.button.clicked.connect(self.open_image) def open_image(self): file_dialog = QFileDialog() file_path, _ = file_dialog.getOpenFileName(self, "选择图片", "", "Image Files (*.png *.jpg *.bmp)") if file_path: image = Image.open(file_path).convert('L') image = image.resize((28, 28)) image = np.array(image) image = image.reshape(1,28, 28, 1) image = image.astype('float32') image /= 255 prediction = model.predict(image) digit = np.argmax(prediction) self.label.setText(f"识别结果:{digit}") if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 这个示例代码创建了一个基于PyQt5的GUI窗口,其中包含一个用于显示识别结果的标签和一个选择图片的按钮。当用户点击选择图片按钮时,会弹出文件对话框,用户可以选择一张手写数字图片进行识别。选择图片后,程序会将图片转换为灰度图像,并调整大小为28x28像素,然后将图像输入到训练好的模型中进行预测,最后将预测结果显示在标签中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值