最近邻插值
这种是最基础最简单的方法。
void xresize(Mat &src, Mat &des, Size size)
{
des.create(size, CV_8UC3);
int sx = 0, sy = 0;// 映射的原图坐标
float fx = (float)src.cols / des.cols; //计算比例
float fy = (float)src.rows / des.rows; //计算比例
//遍历新创建的像素空间
for (int x = 0; x < des.cols; x++)
{
//加0.5是为了四舍五入
sx = fx * x + 0.5; // 该点下x坐标所对应的原图像素。
for (int y = 0; y < des.rows; y++)
{
sy = fy * y + 0.5;// 该点下y坐标所对应的原图像素。
des.at<Vec3b>(x, y) = src.at<Vec3b>(sx, sy);//直接将原图的值赋予新图像
}
}
}