緒:
圖像的縮放操作是圖像處置中根基的處置體例;
OpenCV中對圖像進行縮放最簡單的方式是挪用resize函數;
別的,還有采用圖像金字塔來進行圖像縮放的;
pryUp和pryDown函數;
本文本家兒要介紹:
resize,pryUp,pryDown函數及其圖像縮放的應用;
 resize()函數:
可以將原圖像切確的轉化為指心猿意馬尺寸的方針圖像;
格局:
void resize(InputArray src,
OutputArray dst,
Size dsize,
double fx=0,
double fy=0,
int interpolation=INTER_LINEAR );
參數:
dsize:輸出圖像的巨細;
當dsize不為0時,即指心猿意馬的圖像縮放巨細;
當dsize為0時,縮放巨細為dsize=Size(round(fx*src.cols),round(fy*src.rows))
此中,fx,fy為縮放比例;
【注】:
dsize和fx/fy不克不及同時為0;
 resize放年夜圖像:
若要放年夜圖像,保舉利用CV_INTER_LINEAR雙線性插值;
以王者榮耀logo為例,巨細為482*355,進行放年夜
示例如下:
int main()
{
Mat img = imread("0.jpg");
imshow("原始圖", img);
Mat dst = Mat::zeros(428, 512, CV_8UC3); //我要轉化為512*512巨細的
resize(img, dst, dst.size());
imshow("尺寸調整之后", dst);
waitKey(0);
return 0;
}
 resize縮小圖像:
要縮小圖像,一般保舉利用CV_INTER_AREA插值;
法式如下:
int main()
{
Mat img = imread("0.jpg");
imshow("原始圖", img);
Mat dst;
resize(img, dst, Size(),0.5,0.5);//我長寬都變為本來的0.5倍
imshow("尺寸調整之后", dst);
waitKey(0);
waitKey(0);
return 0;
}
 圖像金字塔:
圖像金字塔是用來進行圖像縮放的,功能和resize一樣;
為什么還需要進修它;
因為其在卷積神經收集中會碰到這個名詞;
且搞圖像的都得學它;
什么是金字塔?
下圖所示,
我們將一層層的圖像比方為金字塔,層級越高,則圖像尺寸越小,分辯率越低;
兩種類型的金字塔:
高斯金字塔:用于下采樣,本家兒要的圖像金字塔;
拉普拉斯金字塔:用于重建圖像,也就是展望殘差,對圖像最年夜水平的還原;
好比一副小圖像重建為一幅年夜圖像;
上采樣和下采樣:
上采樣:就是圖像放年夜,利用pryUp函數;
下采樣:就是圖像縮小,利用pryDown函數;
 pryUp上采樣:圖像放年夜
格局:
void pyrUp(InputArray src,
OutputArray dst,
const Size& dstsize=Size());
上采樣步調:
①將圖像在每個偏向放年夜為本來的兩倍,新增的行和列用0填充;
②利用卷積核與放年夜的圖像卷積,獲得新增像素的近似值;
法式如下:
int main()
{
Mat img = imread("0.jpg");
imshow("原始圖", img);
Mat dst;
pyrUp(img, dst, Size(img.cols*2, img.rows*2)); //放年夜一倍
imshow("尺寸放年夜之后", dst);
waitKey(0);
return 0;
}
 pryDown下采樣:圖像縮小
格局:
void pyrDown(InputArray src,
OutputArray dst,
const Size& dstsize=Size());
下采樣步調:
①將圖像進行高斯內核卷積
②將所有偶數行和列去除
【注】:
上、下采樣都存在一個嚴重的問題,那就是圖像變恍惚了,因為縮放的過程中發生了信息丟掉的問題。要解決這個問題,就得看拉普拉斯金字塔了。
是以,若是縮放仍是采用resize函數;
 0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!