博客
关于我
pyqt5 获取Qlabel中的图片并对其进行处理(包括Qimage转换为Mat)
阅读量:799 次
发布时间:2023-03-05

本文共 1428 字,大约阅读时间需要 4 分钟。

如何将QLabel中的图片提取并进行OpenCV处理

在实际开发中,我们常需要将QLabel中的图片提取并通过OpenCV进行处理。以下是一些常用的操作步骤和代码示例

第一步 将QLabel中的图片提取出来

在Python中,可以通过以下方式获取QLabel中的图片数据:

qimg = self.showScreenImgLabel.pixmap().toImage()

这一步会获取QLabel中的图片,并将其转换为QImage对象。接下来需要对获取到的图片进行处理。

第二步 将QImage转换为OpenCV支持的MAT类型

为了方便对图像进行处理,需要将QImage转换为OpenCV支持的MAT类型。具体实现如下:

def qimage2mat(self, qimg):ptr = qimg.constBits()ptr.setsize(qimg.byteCount())mat = np.array(ptr).reshape(qimg.height(), qimg.width(), 4)return mat

这一步会将QImage的数据提取出来,并按照OpenCV的要求转换为三通道图像矩阵。需要注意的是,这里需要确保图像的通道数为4,以避免后续处理中的问题。

第三步 在对图像进行处理前,将BGR格式转换为RGB格式

OpenCV默认使用BGR格式的图像,而大多数图像处理工具使用RGB格式。因此,在对图像进行处理前,需要将图像格式进行转换:

mat_img_temp = self.qimage2mat(qimg)mat_img = cv2.cvtColor(mat_img_temp, cv2.COLOR_BGR2RGB)

这一步非常重要,确保后续处理的准确性。BGR和RGB格式的差异可能会导致图像显示错误。

第四步 对图像进行中值滤波处理

在具有颜色信息的图像中,中值滤波是一个常用的去噪方法。可以通过以下方式实现:

img_median = cv2.medianBlur(mat_img, 5)

这一步会对图像进行中值滤波处理,参数5表示滤波核的大小。滤波后的图像将保存在img_median变量中。

第五步 将处理后的图像显示到QLabel中

最后,将处理后的图像显示到目标QLabel中显示:

gqimg = QImage(img_median.data, img_median.shape[1], img_median.shape[0], img_median.shape[0] * 3, QImage.Format_RGB888).scaled(self.showProcessImgLabel.width(), self.showProcessImgLabel.height())self.showProcessImgLabel.setPixmap(QPixmap.fromImage(gqimg))

这一步会将处理后的图像转换为QImage对象,并按照目标QLabel的大小进行缩放显示。

整个处理流程可以总结为以下几个步骤:

  • 从QLabel中提取图片数据
  • 将图片转换为OpenCV支持的MAT类型
  • 将BGR格式转换为RGB格式
  • 对图像进行中值滤波处理
  • 将处理后的图像显示到目标QLabel中
  • 以上就是一个常见的QLabel图片处理流程,希望对大家有所帮助。如果需要更详细的代码或其他处理方式,可以参考以上代码的实现。

    转载地址:http://jdafk.baihongyu.com/

    你可能感兴趣的文章
    PyMySQL库对Mysql数据库进行增删改查与工具类封装
    查看>>
    pynput的基本介绍和使用
    查看>>
    pyodbc 通过 IIS7 连接到 MSSQL 2005 服务器
    查看>>
    PyPI 存储库中的 JarkaStealer:深入解析与防范措施
    查看>>
    Pyplot tutorial,Pyplot官方教程自翻译
    查看>>
    PyQ5学习笔记——使用内部槽函数关闭窗口
    查看>>
    PyQ5学习笔记——使用自定义槽函数关闭窗口
    查看>>
    PyQt MimeData 文件名
    查看>>
    PyQt QML Material Design 按钮背景不会改变
    查看>>
    PyQt QString转成python stirng
    查看>>
    PyQt QToolButton在焦点时不更新图标
    查看>>
    PyQt 正确使用 emit() 和 pyqtSignal()
    查看>>
    PyQT-将文件复制到剪贴板
    查看>>
    PYQT.如何在QTableView中插入小部件
    查看>>
    PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
    查看>>
    PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
    查看>>
    PyQt4, class:mouseButtons用法
    查看>>
    PyQt4参考文档
    查看>>
    PyTorch Lightning:通过分布式训练扩展深度学习工作流
    查看>>
    PyQt5 - QThread:在线程仍在运行时被销毁
    查看>>