OpenCV学习(2)--cv::Mat转化为QImage

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 一.目的

   在使用Qt和OpenCV写程序的时候,有时候需要使用OpenCV进行处理,然后使用Qt显示出来,因此,有必要考虑将如何将cv::Mat类型转换为QImage类型。


二.原理

   网上主流的做法是使用QImage的构造函数进行转换,主要是使用cv::Mat的data来构造一个QImage类型,这样做确实可以达到转换目的,但是,因此这样构造出来的QImage本身并不保存data,因此,在QImage的生存周期内,必须保证cv::Mat中的数据不会被释放。上面的这个问题也是比较容易解决的,主要是通过调用QImage::bits函数来强制QImage进行深层次复制,使得QImage自己保存一份data的副本,这样就可以保证在cv::Mat中的数据被释放的时候,QImage还能正常使用。



cv::MatQImage QImagecv::Mat: cv::Mat TempCVImage; m_srcQImage = img.copy(); qDebug() << "Image Format:" << m_srcQImage.format(); std::cout << "image format--:" << std::endl; if (m_srcQImage.format() == QImage::Format_Indexed8) { //黑白图 qDe 阅读详情

相关推荐

Qt:OpenCV::Mat与Qt::QImage相互

前言   Qt和OpenCV是一对形影不离的好基友(哥俩都开源,Qt又跨平台,Linux环境友好),但OpenCV的最常用的类Mat无法直接用于Qt的QImage中,原因在于,两者对图片定义和操作有所不同——Mat的主要功能是矩阵运算,拥有数之不尽的数据类型,包罗万象;而QImage侧重于图片显示,更多的操作是在图形界面上。   因此,MatQImage之间的传值,要多一步换操作。 MatQ...

大山喵写博客的地方 1万+

opencvMatCvMat、IplImage、IplImage*之间换程序

opencvMatCvMat、IplImage、IplImage*数据类型之间换方法

OpenCV学习 day2MatQImage

也可以使用一个Mat类的一部分,创建另一个Mat类,例如以一个图像的(25,25)为起点创建一个50*50像素的正方形RIO Mat(RIO 感兴趣区域,Region of Interest)注意QImage类和Mat类的数据格式不一样,QImage类是RGB,而OpenCVMat类是BGR,Mat roi(image, Rect(25, 25, 50, 50)) //左上角是 (0,0)<bits>: 8、16有无符号的整数 32有无符号的整数和福电视 64有无符号的浮点数。

m0_71100223的博客 1650

cv2qt:OpenCVMat 换为 QT 的 Qimage 的简单 C++

cv2qt 将图像矩阵数组从OpenCVMAT 类型换为Qt的 QImage 类型的简单 C++ 函数。 要求 我使用了 openCV 的 v2.4.5 版本和 QT v4.5,但可能适用于其他版本。 用法 库可以添加到工作目录并包含在项目中。 当前仅使用 RGB 矩阵阵列运行。

cv::MatQImage的互相

OpenCVcv::Mat 和 Qt 的 QImage换很简单,网上也很多参考,这里只是记录一下。换的时候除了要关注构造参数中的图像宽高、存储精度、通道数和通道顺序外,大小端也需要注意。如 QImage::Format_ARGB32 是用 32 位整形存储一个像素,虽然写的是 ARGB 顺序,但是由于存储大小端的关系,PC 一般小端存储,所以字节顺序成了 BGRA。 直接通过数据指针构造 QImage 是复用的原来的内存,要注意释放顺序,也可以 copy 拷贝一份,cv::Mat 同理。

龚建波 1万+

qt图像处理-OpenCVcv::Mat类型换为QImage类型

以上介绍了几种将OpenCVcv::Mat换为QImage的方法。根据具体需求选择合适的方法,例如是否需要处理颜色通道换、内存布局、以及图像类型等。通过合理使用这些方法,可以在Qt应用程序中高效地处理和显示OpenCV图像。

电脑管家 2925

OpenCV cv::MatQImage互相

在使用OpenCV和Qt进行图像处理时,经常需要将cv::MatQImage之间进行换。下面是cv::MatQImage

CHNIM的博客 1476

cv::MatQImage间的

这里将记录一些MatQImage换的方法,但这些方法不一定是最好的,可能

u012487272的专栏 2126

QImageOpenCVcv::Mat数据

在Qt中使用OpenCV,经常是用QImageOpenCVmat进行数据换,最终显示都是QImage或QPixmap的数据,本篇介绍QImagecv::Mat的数据换。

chenyijun的专栏 7817

QImagecv::Mat互相-包括32F图像

废话不多,直接上代码 cv::MatQImage(拷贝) QImage cvMat2QImage(const cv::Mat& mat) { if (mat.empty()) { return QImage(); } QImage image; switch (mat.type()) { case CV_8UC1: { image = QImage((const uchar*)(mat.data), mat.cols, mat.rows, mat.step

sinat_34774186的博客 1549

opencv常用函数,QT中MatQImage

opencv简介,常用函数,Mat常用构造,通道介绍,QT中MatQImage

m0_67254672的博客 5792

【Qt-opencvQImagecv::Mat 之间的相互

代码有更新。请使用下面这篇文章中的代码。 https://blog.csdn.net/liyuanbhu/article/details/86307283 最近做图像处理方面的项目比较多,很多算法自己从头写的话太浪费时间,而且自己写的也不一定完善,早就听说OpenCV在图像处理算法方面功能很强大,一直没时间学习,这次正好项目用到了,临时抱佛脚学习OpenCV入门知识。因为我的程序界面都是用Q...

好习惯成就伟大 2814

OpenCvQImagecv::Mat 之间的相互

OpenCvQImagecv::Mat 之间的相互

summer的博客 870

cv::Mat HObject QImage图像的区别

mat hobject qimage三者的区别

weixin_43575474的博客 870

Mat 类型 QImage 类型

自:https://blog.csdn.net/liyuanbhu/article/details/86307283 void Dialog::Mat2QImage(Mat image) { //图片的显示主要问题还是在于QImageMat格式的不同,其中QImage是RGB排列,而Mat 是 BGR, //同时两者格式包含的内容页不同,因此需要经过换才能够显示。 Mat rgb; ...

yleave的博客 2565

QT中的QImage、QPixmap和opencv 中的mat

我们使用QT和opencv的过程中经常会碰到这样的问题:Mat怎么化位QImageMat怎么转化为QPixmap?今天我来告诉大家一个比较好的解决方案(以下代码参考了别人的,增加了一些修改)#include <QDebug> #include <QImage> #include <QPixmap>#include "opencv2/imgproc/imgproc.hpp" #include "o

coordinate的博客 1万+

cv::Mat换为QImage错误

cv::Mat换为QImage错误使用Opencvcv::Mat换Qt的QImage发生错误新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 使用Opencvcv::Mat换Qt的QImage发生错误 在使用

qq_45452773的博客 2967

OpenCV MatQImage相互换函数

在网上找到的代码,但是其中有一个函数不能使用,通过分析修改成为可执行的代码,我估计可能是Qt版本的问题,我的Qt版本为4.4。 QImage换成MatMat QImage2cvMat(QImage image) { cv::Mat mat; switch(image.format()) { case QImage::Format_ARGB32: case Q

colorfulshark 1万+

cv::Mat 转化为 QImage (Deep copy)

实现的,所以在 QImage 对象的生存期内,必须保证 uchar *data 指向的内存空间不会被释放。写程序时,常常需要使用 OpenCV 对图像进行处理,然后利用 Qt 将图像显示出来,所以需要将 cv::Mat 类型换为 QImage 类型。,它们只是名字不同而已,常见的浅拷贝有指针传递和引用类型;通常是利用 QImage 的构造函数进行换,但是,从构造函数的参数可以看出,这是通过。(大小相同),二者互不干扰,大多数赋值操作采用深拷贝的方式进行。:浅拷贝后,两个不同的变量背后是。

Blogs of zcy1221 1662
上一篇: 算法学习之排序(6)--合并排序
下一篇: hihoCoder_二分·归并排序之逆序对
shengno1
博客等级 码龄15年 242粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值