Python使用OpenCV對(duì)圖像進(jìn)行縮放功能
對(duì)圖像進(jìn)行縮放的最簡(jiǎn)單方法當(dāng)然是調(diào)用resize函數(shù)啦!
resize函數(shù)可以將源圖像精確地轉(zhuǎn)化為指定尺寸的目標(biāo)圖像。
要縮小圖像,一般推薦使用CV_INETR_AREA來(lái)插值;若要放大圖像,推薦使用CV_INTER_LINEAR。
現(xiàn)在說(shuō)說(shuō)調(diào)用方式
第一種,規(guī)定好你要圖片的尺寸,就是你填入你要的圖片的長(zhǎng)和高。
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
//圖片的縮小與放大
int main()
{
Mat img = imread("lol5.jpg");
imshow("原始圖", img);
Mat dst = Mat::zeros(512, 512, CV_8UC3); //我要轉(zhuǎn)化為512*512大小的
resize(img, dst, dst.size());
imshow("尺寸調(diào)整之后", dst);
waitKey(0);
}
第二種,填入你要縮小或者放大的比率。
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
//圖片的縮小與放大
int main()
{
Mat img = imread("lol5.jpg");
imshow("原始圖", img);
Mat dst;
resize(img, dst, Size(),0.5,0.5);//我長(zhǎng)寬都變?yōu)樵瓉?lái)的0.5倍
imshow("尺寸調(diào)整之后", dst);
waitKey(0);
}
接下來(lái)說(shuō)說(shuō)圖像金字塔
說(shuō)白了,圖像金字塔就是用來(lái)進(jìn)行圖像縮放的,干的事情跟resize函數(shù)沒(méi)兩樣,那我們還需要學(xué)它嗎?我覺(jué)得有必要的額,因?yàn)樵趯W(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)中會(huì)遇到這個(gè)名詞,所以都學(xué)一學(xué)吧,搞圖形都繞不過(guò)他!
說(shuō)說(shuō)什么是圖像金字塔。

其實(shí)非常好理解,如上圖所示,我們將一層層的圖像比喻為金字塔,層級(jí)越高,則圖像尺寸越小,分辨率越低。
兩種類(lèi)型的金字塔:
- 高斯金字塔:用于下采樣,主要的圖像金字塔;
- 拉普拉斯金字塔:用于重建圖像,也就是預(yù)測(cè)殘差(我的理解是,因?yàn)樾D像放大,必須插入一些像素值,那這些像素值是什么才合適呢,那就得進(jìn)行根據(jù)周?chē)袼剡M(jìn)行預(yù)測(cè)),對(duì)圖像進(jìn)行最大程度的還原。比如一幅小圖像重建為一幅大圖像,
圖像金字塔有兩個(gè)高頻出現(xiàn)的名詞:上采樣和下采樣?,F(xiàn)在說(shuō)說(shuō)他們倆。
- 上采樣:就是圖片放大(所謂上嘛,就是變大),使用PryUp函數(shù)
- 下采樣:就是圖片縮?。ㄋ^下嘛,就是變?。?,使用PryDown函數(shù)
下采樣將步驟:
對(duì)圖像進(jìn)行高斯內(nèi)核卷積
將所有偶數(shù)行和列去除
下采樣就是圖像壓縮,會(huì)丟失圖像信息。
上采樣步驟:
- 將圖像在每個(gè)方向放大為原來(lái)的兩倍,新增的行和列用0填充;
- 使用先前同樣的內(nèi)核(乘以4)與放大后的圖像卷積,獲得新增像素的近似值。
上、下采樣都存在一個(gè)嚴(yán)重的問(wèn)題,那就是圖像變模糊了,因?yàn)榭s放的過(guò)程中發(fā)生了信息丟失的問(wèn)題。要解決這個(gè)問(wèn)題,就得看拉普拉斯金字塔了。
下面給出OpenCV中pryUp和pryDown的用法。
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
//圖像金字塔
int main()
{
Mat img = imread("lol8.jpg");
imshow("原始圖", img);
Mat dst,dst2;
pyrUp(img, dst, Size(img.cols*2, img.rows*2)); //放大一倍
pyrDown(img, dst2, Size(img.cols * 0.5, img.rows * 0.5)); //縮小為原來(lái)的一半
imshow("尺寸放大之后", dst);
imshow("尺寸縮小之后", dst2);
waitKey(0);
}顯然,無(wú)論是放大還是縮小,圖像都變得模糊了,這就是他的致命缺點(diǎn)。

個(gè)人認(rèn)為,要做縮放就用resize函數(shù)吧,畢竟方便太多而且圖像不會(huì)變模糊!
到此這篇關(guān)于Python使用OpenCV對(duì)圖像進(jìn)行縮放功能的文章就介紹到這了,更多相關(guān)OpenCV圖像縮放內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
flask連接并操作數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例
本文詳細(xì)介紹了在Flask框架中連接并操作數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Python BautifulSoup 節(jié)點(diǎn)信息
這篇文章主要介紹了Python BautifulSoup 節(jié)點(diǎn)信息,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
簡(jiǎn)單介紹Python2.x版本中的cmp()方法的使用
這篇文章主要介紹了簡(jiǎn)單介紹Python2.x版本中的cmp()方法的使用,然而該方法在Python3.x版本中已并不再內(nèi)置...需要的朋友可以參考下2015-05-05
python繪制風(fēng)場(chǎng)方向和大小quiver問(wèn)題
這篇文章主要介紹了python繪制風(fēng)場(chǎng)方向和大小quiver問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Python max內(nèi)置函數(shù)詳細(xì)介紹
這篇文章主要介紹了Python MAX內(nèi)置函數(shù)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-11-11
python內(nèi)置堆的具體實(shí)現(xiàn)
本文主要介紹了python內(nèi)置堆的具體實(shí)現(xiàn),堆的表示方法,從上到下,從左到右存儲(chǔ),與列表十分相似,本文就來(lái)介紹一下,感興趣的可以了解一下2023-03-03
Python實(shí)現(xiàn)透明數(shù)字時(shí)鐘效果
這篇文章主要為大家詳細(xì)介紹了一個(gè)使用 Python 和 Tkinter 庫(kù)實(shí)現(xiàn)的透明數(shù)字時(shí)鐘應(yīng)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-02-02
Python中語(yǔ)音轉(zhuǎn)文字相關(guān)庫(kù)介紹(最新推薦)
Python的speech_recognition庫(kù)是一個(gè)用于語(yǔ)音識(shí)別的Python包,它可以使Python程序能夠識(shí)別和翻譯來(lái)自麥克風(fēng)、音頻文件或網(wǎng)絡(luò)流的語(yǔ)音,這篇文章主要介紹了Python中語(yǔ)音轉(zhuǎn)文字相關(guān)庫(kù)介紹,需要的朋友可以參考下2023-05-05
Python中使用MELIAE分析程序內(nèi)存占用實(shí)例
這篇文章主要介紹了Python中使用MELIAE分析程序內(nèi)存占用實(shí)例,本文直接給出使用代碼示例,需要的朋友可以參考下2015-02-02

