从IplImage到QImage的转化看性能优化
来源:互联网 发布:c 数组里面的数组 编辑:程序博客网 时间:2024/09/21 09:29
最近对VP的数据协议进行了反思,昨天进行了重大改进,去掉了智能指针的使用,在模块内部使用了缓存区概念,既方便了内存管理又极大地提高了效率,性能检测结果对比如下:
改进之前:
改进之后:
上述所有的数字都以cpu时钟周期为单位。
运行结果还是不太满意,继续追踪各个模块的运行时间,结果大大出乎意料,从IplImage到QImage的转化函数居然这么耗时,性能检测结果如下:
注意其中的CvImage2QImage的执行时间。 跟踪那段函数代码,使用的两重循环执行图片的转化:
下面是改进的代码:
改进后的性能检测结果如下:
原因分析:
第一种情况要差不多23个时钟周期,然后第二个却只需要4个时钟周期,效率差距这么大。原因在于opencv中图片存储是按行存取,所以行优先处理可以更加符合程序的局部性原理。
尾声
对于一个实时性强的系统每秒处理几十帧,从一帧处理147个时钟周期到16个时钟周期。。。
一种更好的改进:
通过QImage和IplImage共享内存,需要注意的是,QT中的的图片是RGB格式,而OpenCV摄像头获得图片是BGR格式。具体实现代码如下:
经测试,对于640*480的帧图片,转化为qimage只需要五个时钟周期左右。
add: 2011/1/14 by RYF
- 从IplImage到QImage的转化看性能优化
- opencv IplImage 转化成 QImage
- IplImage转QImage的代码
- OpenCV中IplImage与Qt中的QImage转化
- IplImage和QImage的转换源代码
- QImage与IplImage之间的转换
- IplImage *,Mat,QImage之间的转换
- QImage与IplImage之间转换的实现
- 从GC的角度看性能优化(转)
- 从CMMI规范的角度看Java性能优化
- CvMat IplImage QImage 转换
- QT Qimage转Iplimage
- 性能优化--从Json过度到FlatBuffers的数据传输
- 从web浏览器的渲染到性能优化
- 从web浏览器的渲染到性能优化
- 从GC的角度看性能优化和性能计数器使用
- QImage和IplImage的转换(简单方法)
- 关于QImage和IplImage之间转换的实现
- 线程池问题
- 开发中遇到的cookie问题总结
- 也许是真的长大了
- 合成/聚合复用原则(CARP)
- 我的2010-三喜三悲
- 从IplImage到QImage的转化看性能优化
- Linux下netstat-nslookup-finger-ping-在线帮助-whereis
- android ListView详解
- VB调用API的学习
- 一个SDE无法启动的问题以及解决方案
- 画UML图的工具探索
- ubuntu终端查看最近输入的命令
- linux_command_sed
- 解决使用CFileDialog造成的ADO访问相对路径下的数据库出错问题