最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻、双线性、双三次、基于像素区域关系、兰索斯插值。下面用for循环代替cv::resize函数来说明其详细的插值实现过程,其中部分代码摘自于cv::resize函数中的源代码。
每种插值算法的前部分代码是相同的,如下:
- cv::Mat matSrc, matDst1, matDst2;
- matSrc = cv::imread("lena.jpg", 2 | 4);
- matDst1 = cv::Mat(cv::Size(800, 1000), matSrc.type(), cv::Scalar::all(0));
- matDst2 = cv::Mat(matDst1.size(), matSrc.type(), cv::Scalar::all(0));
- double scale_x = (double)matSrc.cols / matDst1.cols;
- double scale_y = (double)matSrc.rows / matDst1.rows;