“大脑”生长系列(四)

  • 2020 年 4 月 10 日
  • 筆記

图像处理的过程中,我们经常会遇到更改图片大小来适应不同的应用场景。OpenCV也提供了这样的API接resize。

resize接口原型:

void resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolaiton == INTER_LINEAR);

参数说明:

src: 源图像;

dst:调整后目标图像;

dsize: 调整后的大小;

fx : width方向的缩放比例,如果它是0,那么它就会按照(double)dsize.width/src.cols来计算;

fy : height方向的缩放比例,如果它是0,那么它就会按照(double)dsize.height/src.rows来计算;

interpolation: 指定图像插值的算法;

老规矩请你欣赏代码示例

int main(int argc, char *argv[])  {      Mat src = imread("3.jpg");      Mat cv256_linear;      Mat cv256_nearest;      resize(src, cv256_linear, Size(512, 512), 0, 0, INTER_NEAREST);      resize(src, cv256_nearest, Size(512, 512), 0, 0, INTER_LINEAR);      namedWindow("cv256_linear");      namedWindow("cv256_nearest");      namedWindow("src");      imshow("src", src);      imshow("cv256_linear", cv256_linear);      imshow("cv256_nearest", cv256_nearest);      waitKey(0);      return 0;  }

这里简单说明一下这段代码:

(1)resize是我们做大小调整的接口,src是我们的源图像,采取默认的width方向和height方向的缩放方式;

(2)演示了两种缩放的算法:

INTER_NEAREST:缩放过程中新的位置的像素值使用邻近位像素的值

INTER_LINEAR:缩放过程中新的位置的像素值使用通过双线性插值的方式得到像素的值

展示一下效果图

PK