「大腦」生長系列(四)

  • 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