之前用的图像缩放的方法都是OpenCV自带的方法,效果很好,速度也不错。但当要对大量图片进行缩放时,就要考虑如何去优化图像缩放的算法了。在网上看到一篇很好的关于图像缩放算法的博客,系统的讲解了如何去对图像缩放程序进行优化,从一个基本的图像缩放算法出发,然后一步一步的优化其速度和缩放质量。但是博客中只是针对图像的数据区TPicRegion进行操作,如果想利用OpenCV实现真实图像的缩放则需要将Mat格式的图像数据传递给该数据区。虽然不难,但要对Mat的data有一定的了解,在此记录一下。
在这里,代码使用C++;涉及到汇编优化的时候假定为x86平台;使用的编译器为vc2013;由于博客中的算法针对的是32位的ARGB颜色的图像,为了尽量少的改动程序且能够处理BGR的图像,在转换时A通道设为0即可。
图像数据结构的定义: