opencv图片格式转换
2015-08-21 11:12
357 查看
关于QImage和Mat两种格式转换,网上已有一些解决方案,如:
http://blog.sina.com.cn/s/blog_7559ce850100ydvy.html http://blog.csdn.net/zengweion/article/details/7625897 http://blog.csdn.net/yang_xian521/article/details/6968012 http://hi.baidu.com/windroc/item/5c4b4a13725c11433a176eca
这里再做一些归纳总结。
其实,格式转换无非就是找到格式间参数的对应关系:
QImage Mat
数据指针 uchar* bits() uchar* data
宽度 int width() int cols
高度 int height() int rows
步长 int bytesPerLine() cols * elemeSize()
格式 Format_Indexed8 8UC1, GRAY,灰度图
Format_RGB888 8UC3, BGR, 需要通过mixChannels进行顺序调换
Format_ARGB32 8UC4, BGRA,需要通过mixChannels进行顺序调换
以此类推,只要保证通道数以及排列顺序一致即可。
在转换的过程中一定要先判断图像的格式,QImage用QImage::format(), Mat中用Mat::channels(),然后再设置相应的转换参数。
http://blog.sina.com.cn/s/blog_7559ce850100ydvy.html http://blog.csdn.net/zengweion/article/details/7625897 http://blog.csdn.net/yang_xian521/article/details/6968012 http://hi.baidu.com/windroc/item/5c4b4a13725c11433a176eca
这里再做一些归纳总结。
其实,格式转换无非就是找到格式间参数的对应关系:
QImage Mat
数据指针 uchar* bits() uchar* data
宽度 int width() int cols
高度 int height() int rows
步长 int bytesPerLine() cols * elemeSize()
格式 Format_Indexed8 8UC1, GRAY,灰度图
Format_RGB888 8UC3, BGR, 需要通过mixChannels进行顺序调换
Format_ARGB32 8UC4, BGRA,需要通过mixChannels进行顺序调换
以此类推,只要保证通道数以及排列顺序一致即可。
在转换的过程中一定要先判断图像的格式,QImage用QImage::format(), Mat中用Mat::channels(),然后再设置相应的转换参数。
相关文章推荐
- hadoop随手笔记
- Openstack kilo指南安装与实践(1)
- linux遍历目录C语言
- linux下使用crontab定时备份MYSQL数据库的方法
- Docker 学习笔记(一) docker特点及应用场景
- linux基础教程---用户和组操作
- AIXnfs到linux全库迁移
- [转载]linux上用PHP读取WORD文档
- linux shell trap的使用
- 【Hadoop】HDFS的运行原理
- Centos7安装配制VSftp权限(二)
- linux改变文件文件的大小
- Nginx 的动态 upstreams
- Topcoder SRM 662 Div1, ExactTree,DP
- Nginx 的动态 upstreams
- Linux学习笔记
- Nginx负载均衡深入浅出
- Linux命令(4)
- CPU监控程序出错——无法加载计数器名称数据,因为从注册表读取的索引“”无效
- opencv随机数的产生