Qt QImage与OpenCV Mat转换
本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/51029382
应一个朋友的要求,整理总结一下,Qt中的图像类QImage与OpenCV库中Mat的转换方法,测试工程已发布在GitHub:yhlleo/QImage2Mat
编译环境:
VS2010CMake (version >= 2.8.3)Qt (version 4.8.6)
运行结果如图:
一共有四个测试函数及其对应的转换结果:
qimageShow()->QImage加载图像,并显示在Graphic View中;mat2qImageShow()->Mat to QImage是OpenCVMat加载图像,转化为QImage后在Graphic View中显示;qImage2MatShow()->QImage to Mat 1是使用QImage数据直接初始化Mat后,使用OpenCV的gui显示方法;qImage2MatPtrShow()->QImage to Mat 2是使用常用的指针数组的方式遍历QImage,然后为Mat矩阵赋值,再使用OpenCV的gui显示方法;
mat2qImageShow()和qImage2MatShow()函数中,转换源代码主要来自博客:QImage 与 cv::Mat 之间的相互转换,博主写得很巧妙,值得一看。
另外,提供的常见的指针数组的访问方式(见函数qImage2MatPtr()),对于QImage数据格式不同于Mat,不能使用以往(i*cols+j)*channels+k这种方式访问,而是i*byterPerLine+j*imgChannels + k,其中byterPerLine=(width*depth+31)/8,也就是说,其中含有4个字节的补齐问题,请参见提供的详细代码。
关于QImage的format()类型,可以阅读help文档,解释的也比较清楚。
Qt QImage与OpenCV Mat转换的更多相关文章
- QImage与cv::Mat转换;
QImage主要格式有QImage::Format_RGB32, QImage::Format_RGB888, QImage::Format_Index8, 不同的格式有不同的排布: 格式部分可以参考 ...
- C++ base64 opencv Mat 转换
static std::string base64Decode(const char* Data, int DataByte) { //解码表 const char DecodeTable[] = { ...
- 一个显示 OpenCV Mat 图像的自定义 Qt 控件
今天学习 Qt 的时候顺手写了一个,包含一个头文件 qcvdisplay.h 和一个源文件 qcvdisplay.cpp,因为这是 qt 默认的文件命名方式,在 Qt Designer 中提升控件时会 ...
- QImage 与 cv::Mat 之间的相互转换
近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...
- qt上用opencv显示摄像头视频
参考:http://blog.csdn.net/augusdi/article/details/8865541 代码如下: 注意,要在ui界面上放置一个“Vertical Layout”控件,调整到合 ...
- 海康网络摄像机YV12转换为BGR,由opencv Mat显示 (转)
我使用的是海康DS-2CD852MF-E, 200万,网络摄像机,已经比较老了,不过SDK在海康官网下载的,开发流程都差不多. 海康摄像机回调解码后的视频数据格式为YV12,顺便说一下YV12的数据格 ...
- Qt中添加OpenCV库
配置在Qt中的OpenCV,看了很多“教程”,最终成功.记一下过程. 本机配置: window7 32位系统: qt-opensource-windows-x86-mingw492-5.5.1: Op ...
- QT内使用OpenCV
在QT内使用Opencv,调试了好久总是出问题. 開始在pro文件内进行了opencv的配置,然后就是不能识别#include包括文件,后来不知道什么原因.奇妙地 能够识别包括了. 但是,新的问题出现 ...
- Matlab to OpenCV Mat
convert Matlab matrix to OpenCV Mat. Support CV_32FC3 only currently. The Code int matlab2opencv(cv: ...
随机推荐
- Sql Server 强制断开数据库已有连接的方法
用管理员账户sa登陆,然后在master下新建查询: 在查询窗体输入: declare @i int declare cur cursor for select spid from sysproces ...
- ios weak和strong的差别
The difference is that an object will be deallocated as soon as there are no strong pointers to it. ...
- 【POJ 2417】 Discrete Logging
[题目链接] http://poj.org/problem?id=2417 [算法] Baby-Step,Giant-Step算法 [代码] #include <algorithm> #i ...
- mysql5.7下面windows平台大小写敏感
转自:https://blog.csdn.net/lrl219/article/details/52889582 根据网上的信息在my.ini下面的mysqld的配置下面添加lower_case_ta ...
- HTML中href、src区别
href是Hypertext Reference的缩写,表示超文本引用.用来建立当前元素和文档之间的链接.常用的有:link.a.例如: <link href="reset.css&q ...
- FlappyBird模拟(不完整版本)
FlappyBird模拟(不完整版本) 准备材料 land地 sky天 pipe管道 bird小鸟 Land.js function Land(info) { this.x = info.x; thi ...
- XML DTD跟SCHEMA约束 语法了解
dtd语法 元素: <!Element 元素名称 数据类型|包含内容> 数据类型: #PCDATA:普通文本 使用的时候一般用()引起来 包含内容: 该元素下可以出现哪些元素, 用()引起 ...
- hdu 2444 The Accomodation of Students 判断是否构成二分图 + 最大匹配
此题就是求最大匹配.不过需要判断是否构成二分图.判断的方法是人选一点标记为红色(0),与它相邻的点标记为黑色(1),产生矛盾就无法构成二分图.声明一个vis[],初始化为-1.通过深搜,相邻的点不满足 ...
- 开发手机APP过程,不同使用场景APP搜索框的样式及区别
搜索框是 app 内最常见的控件之一,可以帮助用户快速又精准找到期望的内容与功能.不同的使用场景下,根据页面中搜索的重要程度,搜索框也有着不同的样式. 下面就常州开发APP公司和大家聊聊常见的四种样式 ...
- SpringMVC(五)@RequestHeader和@CookieValue
通过使用@RequestHeader获取请求头 通过使用@CookieValue获取cookie值 代码: 1: @Controller 2: public class TestHeader_Cook ...