opencv图像转QPixmap格式图像后无彩色且中间有一条黑线

背景

自己使用PyQt5开发了一个界面,需要在界面的某个标签上显示opencv-python处理后的图像, 原来使用的代码段如下:

复制代码
            img_rgb = cv2.cvtColor(cvimage, cv2.COLOR_BGR2RGB)
            cv2.imwrite('2.jpg',img_rgb)
            qimg = QImage(img_rgb.data, img_rgb.shape[1], img_rgb.shape[0], QImage.Format_RGB888)
            pixmap = QPixmap.fromImage(qimg)
            image = pixmap.toImage()
            image.save("saved_image.png")

保存后发现,opencv处理后的图像img_rgb是正常的,但是转换成QPixmap格式后,保存的图片确是有问题的,不知何故?郁闷...............................

分析

当将OpenCV处理后的图像转换成QPixmap格式图像时,出现无彩色且中间有一条黑线的情况可能是由于图像数据格式的转换问题导致的。通常情况下,OpenCV读取的图像是以BGR格式存储的,而Qt中的QImageQPixmap默认使用的是RGB格式。因此,在将OpenCV处理后的图像转换成QPixmap格式图像时,需要进行格式转换。

以下是一个示例代码,演示了如何将OpenCV处理后的图像转换成QPixmap格式图像并解决可能出现的无彩色和黑线问题:

复制代码
import cv2
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QLabel

def cvimage_to_qpixmap(cvimage):
    height, width, channel = cvimage.shape
    bytesPerLine = 3 * width
    qimage = QImage(cvimage.data, width, height, bytesPerLine, QImage.Format_RGB888)
    qpixmap = QPixmap.fromImage(qimage.rgbSwapped())
    return qpixmap

# 读取OpenCV处理后的图像
cvimage = cv2.imread("processed_image.png")

# 将OpenCV处理后的图像转换成QPixmap格式图像
qpixmap = cvimage_to_qpixmap(cvimage)

# 创建一个标签显示QPixmap格式图像
app = QApplication([])
label = QLabel()
label.setPixmap(qpixmap)
label.show()

app.exec_()

在这个示例中,cvimage_to_qpixmap()函数用于将OpenCV处理后的图像转换成QPixmap格式图像。我们在转换过程中指定了QImage.Format_RGB888格式,并使用rgbSwapped()函数进行颜色通道的转换,以确保正确显示彩色图像。

结果

虽然不是很明白上面转换函数的意思,但是问题成功结局了,美美哒。

相关推荐
兵慌码乱10 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
兵慌码乱11 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
xuyang87062716 天前
数字化转型标配:全域可视固定资产管理系统
标签·资产管理·打印机·手持机·采集器
王小王-12320 天前
基于机器学习算法的恶意软件行为分析与检测系统设计与实现
机器学习·pyqt5·检测系统·恶意软件行为检测
xuyang8706271 个月前
打通资产数据壁垒,固定资产管理系统实现全流程数字化
标签·资产管理·打印机·手持机·采集器
十年之少1 个月前
matplotlib 与 PyQt5 结合使用——PyQt5
matplotlib·pyqt5
津津有味道1 个月前
一键写入启动游戏NDEF复合记录NFC标签vb6源码
游戏·标签·nfc·ndef·复合记录
张人玉2 个月前
PyCharm配置PyQt5安装报错详情笔记
笔记·qt·pycharm·pyqt5
是梦终空2 个月前
计算机毕业设计271—基于python+深度学习+YOLOV7的车牌识别系统(源代码+数据库+3万字论文)
python·深度学习·opencv·yolo·毕业设计·pyqt5·车牌识别系统
Pyeako3 个月前
PyQt5 + PaddleOCR实战:打造桌面级实时文字识别工具
开发语言·人工智能·python·qt·paddleocr·pyqt5