python打开opencv图像与QImage图像及其转化

目录

1、Qimage图像

2、opencv图像

3、python打开QImage图像通过Qlabel控件显示

4、python打开QImage图像通过opencv显示

5、python打开opencv图像并显示

6、python打开opencv图像通过Qlabel控件显示


1、Qimage图像

QImage是Qt库中用于存储和处理图像的类。它可以存储多种格式的图像,包括RGB、RGBA、CMYK等。

QImage使用一个一维数组来存储像素数据。每个像素由红、绿、蓝三个分量组成,每个分量的取值范围为0到255。如果图像是彩色的,则每个像素还包含一个alpha通道,表示透明度,取值范围也为0到255。

在QImage中,像素数据的存储顺序是从左到右、从上到下。对于宽度为w和高度为h的图像,像素数据的起始地址为(w * h)个字节。每个像素的数据占用4个字节,即32位。因此,整个图像的数据大小为w * h * 4个字节。

以下是一个简单的示例代码,演示如何创建一个空的QImage对象并设置其大小:

from PyQt5.QtGui import QImage# 创建一个空的QImage对象,大小为100x100像素,格式为RGB32
image = QImage(100, 100, QImage.Format_RGB32)# 检查图像是否为空
if image.isNull():print("Image is null")
else:print("Image is not null")

图:原始图像

2、opencv图像

OpenCV使用NumPy数组来存储图像数据。在OpenCV中,每个图像都是由一个三维的NumPy数组表示的。该数组包含三个维度:高度、宽度和通道数。对于彩色图像,通道数为3,分别代表红色、绿色和蓝色通道。对于灰度图像,通道数为1。

每个像素值的范围取决于图像的数据类型。通常情况下,8位无符号整数(uint8)被用于RGB图像,其中每个通道的取值范围是0到255。如果要将图像保存到文件中,则需要将其转换为适当的数据类型和范围。

3、python打开QImage图像通过Qlabel控件显示

import numpy as np
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, Qlabel# 创建一个QGuiApplication对象
app = QApplication([])
# 加载图像文件
image = QImage(r"d:\Pictures\Saved Pictures\mv.jpg")# 将QImage转换为QPixmap对象
pixmap = QPixmap.fromImage(image)# 创建一个标签对象并将QPixmap传递给它
label = QLabel()
label.setPixmap(pixmap)# 显示标签
label.show()
# 运行应用程序的事件循环
app.exec_()
 

4、python打开QImage图像通过opencv显示

import numpy as np
from PyQt5.QtGui import QImage
import cv2
import matplotlib.pyplot as plt
def qimage_to_opencv(qimage):# 将QImage转换为numpy数组buffer = qimage.bits().asstring(qimage.byteCount())img_arr = np.frombuffer(buffer, dtype=np.uint8).reshape((qimage.height(), qimage.width(), 4))return img_arr# 加载图像文件
image = QImage(r"d:\Pictures\Saved Pictures\mv.jpg")
cvimg=qimage_to_opencv(image)
# 将图像从BGR色彩空间转换为RGB色彩空间
img_rgb = cv2.cvtColor(cvimg, cv2.COLOR_BGR2RGB)# 使用matplotlib显示图像
plt.imshow(img_rgb)
plt.title('Image')
plt.show()

5、python打开opencv图像并显示

import cv2
import matplotlib.pyplot as plt
# 读取图像文件
img = cv2.imread(r"d:\Pictures\Saved Pictures\mv.jpg")# 将图像从BGR色彩空间转换为RGB色彩空间
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 使用matplotlib显示图像
plt.imshow(img_rgb)
plt.title('Image')
plt.show()

6、python打开opencv图像通过Qlabel控件显示

import cv2
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QLabel
import sys
def CvMatToQImage(cvMat):if len(cvMat.shape) == 2:# 灰度图是单通道,所以需要用Format_Indexed8rows, columns = cvMat.shapebytesPerLine = columnsreturn QImage(cvMat.data, columns, rows, bytesPerLine, QImage.Format_Indexed8)else:rows, columns, channels = cvMat.shapebytesPerLine = channels * columnsreturn QImage(cvMat.data, columns, rows, bytesPerLine, QImage.Format_RGB888).rgbSwapped()
# 读取图像文件
img = cv2.imread(r"d:\Pictures\Saved Pictures\mv.jpg")
# 加载图像文件
qimg=CvMatToQImage(img)
# 创建一个QGuiApplication对象
app = QApplication(sys.argv)# 创建QLabel并设置其Pixmap
label = QLabel()
pixmap = QPixmap.fromImage(qimg)
label.setPixmap(pixmap)
# 显示标签
label.show()
# 运行应用程序的事件循环
app.exec_()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/299279.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2020使用MFC开发一个贪吃蛇游戏

背景: 贪吃蛇游戏 按照如下步骤实现:。初始化地图 。通过键盘控制蛇运动方向,注意重新设置运动方向操作。 。制造食物。 。让蛇移动,如果吃掉食物就重新生成一个食物,如果会死亡就break。用蛇的坐标将地图中的空格替换为 #和”将…

哭了,为什么我年终总结的时候没看到这个

为啥我才知道还有这东西啊啊啊 今年终于不用自己写年终总结了,每年写总结写的我头都疼,这东西配享太庙! 只要说清楚需求,几分钟就写好一篇啊。什么周报,月报,工作总结,会议纪要....都可以啊啊…

代码随想录第四十天(一刷C语言)|单词拆分

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。 单词拆分 思路:参考carl文档 动规五部曲分析如下: 1、确定dp数组以及下标的含义:dp[i] : 字符串长度为i的话,dp[i]为true,表示可…

项目联系 Spring Boot + flowable 快速实现工作流

总览 使用flowable自带的flowable-ui制作流程图 使用springboot开发流程使用的接口完成流程的业务功能 基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信…

【MySQL学习笔记009】事务

一、事务简介 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 二、事务操作 1、操作1 查看/设置事务提交方式 select a…

科技云报道:开源才是大模型的未来?

科技云报道原创。 一年前,ChatGPT横空出世;7个多月后,Meta宣布开源LLaMA 2,并且可免费商用。 这一天,也成为大模型发展的分水岭。短时间内,LLaMA 2对一些闭源的大模型厂商造成了致命性的打击。 随后&…

立创EDA与设计技巧

绘制PCB流程: 绘制原理图 ——> PCB布线 ——> 铺铜 器件: 器件就是一个个不同的元件,每个元件不同的引脚有不同的功能,但有可能封装是一样的,所以将器件和封装练习起来,才能将原理图和PCB联系…

DM工作笔记-在windows下对DM7进行库还原恢复

提供了这些备份数据 在windows平台上,将这些备份数据还原到新库中。 首先实例得先停掉: 使用的软件console.exe: 重要步骤:①获取备份;②还原;③恢复 记住DMAP方式这个不要勾选,然后再获取备份…

【Java】SpringBoot快速整合Kafka

目录 1.什么是Kafka? 主要特点和概念: 主要组成部分: 2.Kafka可以用来做什么? 3.SpringBoot整合Kafka步骤: 1. 添加依赖: 2. 配置 Kafka: 3. 创建 Kafka 生产者: 4. 创建 Kafka 消费者: 5. 发布消息: 6. 使…

docker-compose 安装Sonar并集成gitlab

文章目录 1. 前置条件2. 编写docker-compose-sonar.yml文件3. 集成 gitlab4. Sonar Login with GitLab 1. 前置条件 安装docker-compose 安装docker 创建容器运行的特有网络 创建挂载目录 2. 编写docker-compose-sonar.yml文件 version: "3" services:sonar-postgre…

MSSQL执行查询报错“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。”

文章目录 MSSQL执行查询报错“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。”报错截图根本原因 MSSQL执行查询报错“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。” 报错截…

白龙地铁消费项目(地铁消费系统,包括用户端、管理端)

大一学的C#可视化项目文件,所有功能均可使用。可以直接下载 下方是演示照片