发现的IplImage转QImage的好用的方式
今日发现一个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的好用的方式相关推荐
- OpenCV与Qt:IplImage转换为QImage
2019独角兽企业重金招聘Python工程师标准>>> QImage* MainWindow::IplImageToQImage( IplImage *frame) {QImage ...
- 今天才发现,小米手机原来还有5种截图方式,你都知道几种呢
截屏是我们平时玩手机都会的操作,虽然截屏简单,但是截图又很多方法,长截屏.电源键截屏.敲击屏幕截屏,各种方式五花八门. 不过你知道小米手机有几种截屏方式吗?今天笔者就给大家介绍小米手机的5种截图方式, ...
- Qt QImage scaled方法缩放中的问题
最近在某些测试中发现,QImage 先按照一定的比例进行缩放,在对QImage对象进行绘制等操作后,使用以下的方式将其恢复到其原来的尺寸. 为了后面在可能在绘制的过程中让成员变量尽量的少,我定义了一个 ...
- IplImage 的使用
本文转载自 少壮要努力 http://blog.chinaunix.net/uid-22682903-id-1771421.html IplImage 结构解读: typedef struct ...
- Docker网络和服务发现
[编者的话] 本文是<Docker网络和服务发现>一书的全文,作者是Michael Hausenblas.本文介绍了Docker世界中的网络和服务发现的工作原理,并提供了一系列解决方案. ...
- 一次发现underscore源码bug的经历以及对学术界『拿来主义』的思考
事情是如何发生的 最近干了件事情,发现了 underscore 源码的一个 bug.这件事本身并没有什么可说的,但是过程值得我们深思,记录如下,各位看官仁者见仁智者见智. 平时有浏览园区首页文章的习惯 ...
- QImage 与 cv::Mat 之间的相互转换
近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...
- 微服务探索与实践—服务注册与发现
前言 微服务从大规模使用到现在已经有很多年了,从之前的探索到一步步的不断完善与成熟,微服务已经成为众多架构选择中所必须面对的一个选项.服务注册与发现是相辅相成的,所以一般会合起来思索.其依托组件有很多 ...
- zabbix通过自动发现功能实现自动识别网络设备接口
可是现在公司上线了一大批网络设备,如果要每个网络设备都做模板,添加item......那就该废了,于是迫于压力今天来测试使用zabbix的自动发现功能实现自动发现网络设备接口,并且自动获取接口的流量值 ...
- Android 服务动态发现 SPA 之 Auto Service
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/125859181 本文出自[赵彦军的博客] 文章目录 SPI 总结 auto-ser ...
最新文章
- VIRTUAL COMMUNITY INFORMATICS
- 全新目标检测范式SparseR-CNN,超详细实战教学(附数据集)
- rpm 查看安装包 信息 时间 目录
- java的静态内部类
- Flex3.0 图片浏览器(平移、光标中心点放缩、任意角度旋转)
- mysql 查询每人每天_PHP+MySQL实现对一段时间内每天数据统计优化操作实例
- 4 交换机-fanout(订阅发布模式)
- Rails文件上传file_field报错Encoding::UndefinedConversionError
- 设计原则在设计模式的应用
- python批量复制文件夹下所有文件_python定时复制远程文件夹中所有文件
- Java关键字protected详解
- [Python]经纬度转换
- [转]Unity开发之-Unity入门简介(近万字攻略)
- 龙贝格积分——matlab实现
- SpringCloud实战---第十五篇:微服务网关GateWay
- python3网络爬虫开发实战6.3爬取微博处理since_id
- 安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准
- 含根式的定积分计算_定积分计算详细步骤
- VMware虚拟机Mac-OS-X系统如何切换中英文输入法
- 对计算机专业学生的七个建议(作者:Joel Spolsky)