简单期间 不介绍 缩放原理
opencv3.0主要使用pyrUP,pyrDown,resize实现对图像缩放。其中pyrUP,pyrDown是图像金字塔相关的两个函数,对图像进行向上采样和向下采样的操作,本质是图像缩放功能。
pyrUp,向上采样 即放大 语法格式:
void cv::pyrUP(
InputArray src,//原始图像
OutputArray dst,//目标图像。它与原始图像具有相同的类型,指定的大小
const Size & dstsize = Size(),//目标图像大小
int borderType = BORDER_DEFAULT ) //边界类型,这里 仅支持默认值
默认情况下 目标图像大小为 Size(src.cols * 2,src.rows * 2)。在任何情况下需满足下条件:
|dst.width - src.cols * 2|<=mod(dst.width , 2)
|dst.height - src.rows * 2|<=mod(dst.height , 2)
pyrDown,向下采样 即缩小 语法格式:
void cv::pyrDown(
InputArray src,//原始图像
OutputArray dst,//目标图像。它与原始图像具有相同的类型,指定的大小
const Size & dstsize = Size(),//目标图像大小
int borderType = BORDER_DEFAULT ) //边界类型,这里 仅支持默认值
默认情况下 目标图像大小为 Size((src.cols + 1) / 2,(src.rows +1) / 2)。在任何情况下需满足下条件:
|dst.width * 2 - src.cols |<= 2
|dst.height * 2 - src.rows|<= 2
该函数在执行时 首先进行高斯变换 在次基础上 通过抛弃偶数行和列来实现缩小。
resize函数专门用来缩放 语法格式:
void cv:: resize(
InputArray src,//原始图像
OutputArray dst,//目标图像。它与原始图像具有相同的类型,大小为dsize(当该值非零时),或通过src.size(),fx,fy 计算得到
Size dsize ,//目标图像大小,当为0时 需计算获得具体值 dsize = Size(round(fx * src.cols),round(fy * src.rows)) 该值非零 或者 fx和fy 均非零
double fx = 0,//水平方向尺寸大小。当为0时,其值通过计算获得 (double)dsize.width / src.cols
douse fy = 0,//垂直.................................................................................(double)dsize.height / src.rows
int interpolation = INTER_LINEAR ) //插值方式 默认双线性插值
建议用默认插值方式 速度相对快而且效果并不逊色