今日发现一个IplImage 转换为 QImage好用的方式,担心失效便记录一下并添加了自己的内容。

亲测有效。

IplImage 转换为 QImage

QImage *IplImageToQImage(IplImage *img)
{QImage *qmg;cvCvtColor(img,img,CV_BGR2RGB);qmg = new QImage((unsigned char*)img->imageData,img->width,img->height,img->widthStep,QImage::Format_RGB888);return qmg;
}

这里要注意的是,OpenCV的IplImage和Mat每个像素点存储的格式为BGR,而QImage每个像素点存储的格式为RGB,所以在转换之前需要先使用opencv提供的cvCvtColor函数将BGR图像变为RGB图像。还有就是QImage最后一个参数QImage::Format_RGB888,这是指色彩空间R,G,B三个通道分别用8位来表示,如果是灰度图,则参数为QImage::Format_Indexed8。

例如:

QImage *IplImageToQImage(IplImage *img)
{QImage *qmg;IplImage *img_gray = cvCreateImage(cvGetSize(img),8,1);cvCvtColor(img,img_gray,CV_BGR2GRAY);qmg = new QImage((unsigned char*)img->imageData,img->width,img->height,img->widthStep,QImage::Format_Indexed8);return qmg;
}

同理的,Mat转QImage如下:

QImage* MatToQImage(Mat *img)
{QImage *qmg;cvtColor(*img,*img,CV_BGR2RGB);qmg = new QImage((unsigned char*)img->data,img->cols,img->rows,img->step,QImage::Format_RGB888);return qmg;
}

Mat转IplImage如下:

 //深拷贝Mat mat_Image = imshow("1.bmp");IplImage image = cvIplImage(mat_Image);IplImage* temp;//temp = cvCreateImage(cvSize(mat_Image.rows, mat_Image.cols), 8, 1);//灰度图temp = cvCloneImage(&image);

另外,再附上一个在Qt上显示QImage的代码:

图片随着QLabel的大小而自适应

 IplImage* image= CvLoadImage("path/myimage.jpg");QImage *q_Image = new QImage(image->width,image->height,QImage::Format_RGB888);q_Image = IplImageToQImage(image);QImage imageScale = q_Image->scaled(QSize(ui->label->width(),ui->label->height()));QPixmap pixmap = QPixmap::fromImage(imageScale);ui->label->setPixmap(pixmap);

顺便记录显示一下用窗口显示 IplImage

    IplImage* image= CvLoadImage("path/myimage.jpg");cvNamedWindow("img", 0);//参数0代表窗口大小可修改,如果是1代表自适应且大小不可更改cvResizeWindow("img", 400, 300);cvMoveWindow("img", 300, 300);cvShowImage("img", image);cvWaitKey(0);

发现的IplImage转QImage的好用的方式相关推荐

  1. OpenCV与Qt:IplImage转换为QImage

    2019独角兽企业重金招聘Python工程师标准>>> QImage* MainWindow::IplImageToQImage( IplImage *frame) {QImage ...

  2. 今天才发现,小米手机原来还有5种截图方式,你都知道几种呢

    截屏是我们平时玩手机都会的操作,虽然截屏简单,但是截图又很多方法,长截屏.电源键截屏.敲击屏幕截屏,各种方式五花八门. 不过你知道小米手机有几种截屏方式吗?今天笔者就给大家介绍小米手机的5种截图方式, ...

  3. Qt QImage scaled方法缩放中的问题

    最近在某些测试中发现,QImage 先按照一定的比例进行缩放,在对QImage对象进行绘制等操作后,使用以下的方式将其恢复到其原来的尺寸. 为了后面在可能在绘制的过程中让成员变量尽量的少,我定义了一个 ...

  4. IplImage 的使用

    本文转载自  少壮要努力   http://blog.chinaunix.net/uid-22682903-id-1771421.html IplImage 结构解读: typedef struct ...

  5. Docker网络和服务发现

    [编者的话] 本文是<Docker网络和服务发现>一书的全文,作者是Michael Hausenblas.本文介绍了Docker世界中的网络和服务发现的工作原理,并提供了一系列解决方案. ...

  6. 一次发现underscore源码bug的经历以及对学术界『拿来主义』的思考

    事情是如何发生的 最近干了件事情,发现了 underscore 源码的一个 bug.这件事本身并没有什么可说的,但是过程值得我们深思,记录如下,各位看官仁者见仁智者见智. 平时有浏览园区首页文章的习惯 ...

  7. QImage 与 cv::Mat 之间的相互转换

    近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...

  8. 微服务探索与实践—服务注册与发现

    前言 微服务从大规模使用到现在已经有很多年了,从之前的探索到一步步的不断完善与成熟,微服务已经成为众多架构选择中所必须面对的一个选项.服务注册与发现是相辅相成的,所以一般会合起来思索.其依托组件有很多 ...

  9. zabbix通过自动发现功能实现自动识别网络设备接口

    可是现在公司上线了一大批网络设备,如果要每个网络设备都做模板,添加item......那就该废了,于是迫于压力今天来测试使用zabbix的自动发现功能实现自动发现网络设备接口,并且自动获取接口的流量值 ...

  10. Android 服务动态发现 SPA 之 Auto Service

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/125859181 本文出自[赵彦军的博客] 文章目录 SPI 总结 auto-ser ...

最新文章

  1. VIRTUAL COMMUNITY INFORMATICS
  2. 全新目标检测范式SparseR-CNN,超详细实战教学(附数据集)
  3. rpm 查看安装包 信息 时间 目录
  4. java的静态内部类
  5. Flex3.0 图片浏览器(平移、光标中心点放缩、任意角度旋转)
  6. mysql 查询每人每天_PHP+MySQL实现对一段时间内每天数据统计优化操作实例
  7. 4 交换机-fanout(订阅发布模式)
  8. Rails文件上传file_field报错Encoding::UndefinedConversionError
  9. 设计原则在设计模式的应用
  10. python批量复制文件夹下所有文件_python定时复制远程文件夹中所有文件
  11. Java关键字protected详解
  12. [Python]经纬度转换
  13. [转]Unity开发之-Unity入门简介(近万字攻略)
  14. 龙贝格积分——matlab实现
  15. SpringCloud实战---第十五篇:微服务网关GateWay
  16. python3网络爬虫开发实战6.3爬取微博处理since_id
  17. 安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准
  18. 含根式的定积分计算_定积分计算详细步骤
  19. VMware虚拟机Mac-OS-X系统如何切换中英文输入法
  20. 对计算机专业学生的七个建议(作者:Joel Spolsky)

热门文章

  1. html下拉菜单栏代码
  2. H3c服务器升级硬盘固件,H3C交换机升级固件版本
  3. 追光者百度网盘提取码查询工具 v2.0726附使用方法
  4. 多旋翼无人机动力系统发展历程
  5. java ajax教程_JAVA AJAX教程第三章—AJAX详细讲解
  6. 向全国推荐优秀古籍整理图书活动入选书目公示(zz)
  7. 国内ERP市场现状分析及解决方案
  8. CMMI-V2.0真题模拟(1)
  9. Python漫画下载器
  10. android存储登录用户名密码,AndroidStudio实现账号密码保存功能