最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV圖像縮放之cv.resize()函數(shù)詳解

 更新時(shí)間:2022年09月14日 14:27:17   作者:零度蛋花粥  
resize函數(shù)opencv中專門用來(lái)調(diào)整圖像大小的函數(shù),下面這篇文章主要給大家介紹了關(guān)于OpenCV圖像縮放之cv.resize()函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

系列前言

這個(gè)系列是我第一個(gè)想要更下去的系列。每篇會(huì)全面介紹一個(gè) OpenCV 函數(shù),會(huì)給出 API 和示例。示例主要是用 Python 去寫,但是 OpenCV 的原生語(yǔ)言是 C++,所以想翻譯過(guò)去其實(shí)很簡(jiǎn)單。介紹過(guò)程中如果有相關(guān)的 CV 知識(shí)也會(huì)一并寫入,還是那句話,爭(zhēng)取做到說(shuō)人話,讓小白也能看得懂。

API

API 來(lái)自 OpenCV官方文檔

C++

void cv::resize(InputArray    src,
                OutputArray   dst,
                Size          dsize,
                double        fx = 0,
                double        fy = 0,
                int           interpolation = INTER_LINEAR 
               )		

Python

dst = cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

函數(shù)詳解

顧名思義,這個(gè)函數(shù)可以把圖片縮放到你想要的大小。

參數(shù)列表

在這里我們主要說(shuō) Python 的參數(shù)。把各個(gè)參數(shù)的含義和相關(guān)信息打一張表:

參數(shù)類型是否必須指定具體含義
srcnumpy.ndarray原圖像
dsizetuple<int>縮放后的圖像大小
dst無(wú)所謂目標(biāo)圖像,但是在 Python 里面沒(méi)有任何意義。一般不傳參或者設(shè)成 None
fx, fy數(shù)值類型x 和 y 方向上的縮放比例
interpolationint插值方式表示代碼,本質(zhì)是一個(gè) int 數(shù)值,一般用 OpenCV 內(nèi)置的參數(shù)代號(hào)以提高可讀性。

看這張表想必大家就很清楚了。

縮放方式其一

那么,想要實(shí)現(xiàn)縮放圖像,有兩種方法。第一種方法是指定縮放后的圖像大小。下面是實(shí)現(xiàn)這個(gè)功能的一個(gè)簡(jiǎn)單的程序。后面的給出的其他程序都是對(duì) resize 所在行進(jìn)行的改動(dòng)。

import numpy as np
import cv2 as cv

img = cv.imread("你希望縮放的圖片")

# 縮放圖像,后面的其他程序都是在這一行上改動(dòng)
dst = cv.resize(img, (400, 300))

# 顯示圖像
cv.imshow("dst: %d x %d" % (dst.shape[0], dst.shape[1]), dst)
cv.waitKey(0)
cv.destroyAllWindows()

在這個(gè)例子中,我們指定了縮放后圖像的大小為 400 x 300,resize 函數(shù)就會(huì)將圖像拉伸到這個(gè)大小,拉伸后的圖像相比于原圖不會(huì)有任何的裁剪。

縮放方式其二

另一種方法,就是利用后面的 fxfy,指定縮放后圖像長(zhǎng)寬相對(duì)于原圖的比例。如果利用這兩個(gè)參數(shù),前面的 dsize 要寫成一個(gè)不合法的形式(比如:(0, 0))。具體原因后面會(huì)解釋。

注意,在 dsizefx 中間其實(shí)隔了一個(gè)無(wú)用的 dst,雖然沒(méi)有實(shí)際作用,但是這個(gè)參數(shù)確實(shí)存在,按照 Python 的函數(shù)傳參規(guī)則,要么指明實(shí)參傳遞給哪個(gè)形參,要么按順序傳參不能遺漏。具體看下面的例子,兩行的效果一致,都是將圖像橫向縮放為原來(lái)的 0.5 倍,縱向縮放為原來(lái)的 0.3 倍。

# 形參缺省
dst = cv.resize(img, (0, 0), None, 0.5, 0.3)

# 指明形參
dst = cv.resize(img, (0, 0), fx=0.5, fy=0.3)

值得注意的是,縮放后的圖像寬高是根據(jù) round(img.shape[0] * fx)round(img.shape[1] * fy) 來(lái)計(jì)算的,所以即使 fxfy 并不是0,只要這兩個(gè)計(jì)算結(jié)果中有一個(gè)是 0,也會(huì)報(bào)錯(cuò)。

兩種方式的優(yōu)先級(jí)

OpenCV 會(huì)先檢查 dsize 是否合法,即圖像的寬和高是否都是非 0 的。如果是,就按照這個(gè)縮放,忽略后面的 fxfy;如果不是,就按照 fxfy 來(lái)計(jì)算。即優(yōu)先級(jí): dsize > fx fy.

另外,兩種方式是獨(dú)立定義的,也就是不能混著,用數(shù)值指定長(zhǎng)卻用比率指定寬。不存在 cv.resize(img, (0, 400), fx=0.42) 這種用法!

關(guān)于插值方式

最后一個(gè)參數(shù),在 resize 函數(shù)里有 7 種可能取值,參考OpenCV文檔相關(guān)頁(yè)。但是我這里第 7 個(gè)參數(shù)是不存在的,或許是版本問(wèn)題?最后兩個(gè)參數(shù)我試過(guò),會(huì)報(bào)錯(cuò),不行。

雖然這些參數(shù)非常龐雜,但他們的插值效果卻差不多,一般情況下,默認(rèn)的線性插值就夠用。如果非要給點(diǎn)建議的話,我翻譯一下官網(wǎng)方文檔的原話

要縮小圖片,一般來(lái)說(shuō)最好的插值方法是 cv.INTER_AREA,而要放大一張圖片的話,一般來(lái)說(shuō)效果最好的是 cv.INTER_CUBIC (速度慢)或者 cv.INTER_LINEAR (速度快一些但結(jié)果仍然不錯(cuò))。

擴(kuò)展 —— 相關(guān)函數(shù)

OpenCV 為縮放圖像的大小提供了其他的選擇,這里說(shuō)兩個(gè)函數(shù):cv.pyrUpcv.pyrDown。

這兩個(gè)函數(shù)可以用于構(gòu)建圖像金字塔,pyrUp 可以將圖像長(zhǎng)寬均放大為原來(lái)的 2 倍,而 pyrDown 則可以將圖像長(zhǎng)寬縮小為原來(lái)的 1/2. 與 resize 不同的是,這兩個(gè)函數(shù)和高斯卷積核緊密相關(guān)。pyrUp 是對(duì)圖像升采樣,隔行隔列插入零向量之后用高斯核卷積,而 pyrDown 則是對(duì)圖像高斯卷積后隔行隔列采樣。兩個(gè)的卷積核成倍數(shù)關(guān)系,前者是后者的4倍。

總結(jié)

到此這篇關(guān)于OpenCV圖像縮放之cv.resize()函數(shù)詳解的文章就介紹到這了,更多相關(guān)OpenCV圖像縮放cv.resize()函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探究Python中的迭代器和生成器

    深入探究Python中的迭代器和生成器

    迭代器(Iterators)和生成器(Generators)是?Python?中最強(qiáng)大的功能之一,但也是新手最容易混淆的部分,本文將深入探討這兩種概念,以及它們?cè)?Python?編程中的實(shí)際應(yīng)用,需要的朋友可以參考下
    2023-06-06
  • Python opencv實(shí)現(xiàn)人眼/人臉識(shí)別以及實(shí)時(shí)打碼處理

    Python opencv實(shí)現(xiàn)人眼/人臉識(shí)別以及實(shí)時(shí)打碼處理

    這篇文章主要為大家詳細(xì)介紹了Python opencv實(shí)現(xiàn)人眼、人臉識(shí)別,以及實(shí)時(shí)打碼處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python監(jiān)聽(tīng)鍵盤和鼠標(biāo)事件的示例代碼

    Python監(jiān)聽(tīng)鍵盤和鼠標(biāo)事件的示例代碼

    這篇文章主要介紹了Python監(jiān)聽(tīng)鍵盤和鼠標(biāo)事件的示例代碼,幫助大家更好的理解和使用python,提高辦公效率,感興趣的朋友可以了解下
    2020-11-11
  • Python虛擬環(huán)境的原理及使用詳解

    Python虛擬環(huán)境的原理及使用詳解

    這篇文章主要介紹了Python虛擬環(huán)境的原理及使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • pandas?數(shù)據(jù)透視和逆透視的實(shí)現(xiàn)

    pandas?數(shù)據(jù)透視和逆透視的實(shí)現(xiàn)

    本文介紹了pandas?數(shù)據(jù)透視和逆透視的實(shí)現(xiàn),包含pivot()方法透視及pivot_table()方法逆透視,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本

    python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本

    這篇文章主要介紹了python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python操作MongoDB基礎(chǔ)知識(shí)

    python操作MongoDB基礎(chǔ)知識(shí)

    MongoDB支持好多語(yǔ)言,今天我們就寫一寫python操作MongoDB的知識(shí),從安裝MongoDB到操作MongoDB全都有了。
    2013-11-11
  • Python編程中閉包的變量作用域問(wèn)題解析

    Python編程中閉包的變量作用域問(wèn)題解析

    這篇文章主要介紹了Python編程中閉包的變量作用域問(wèn)題解析,在學(xué)習(xí)Python的返回函數(shù)的時(shí)候,我發(fā)現(xiàn)里面涉及了幾個(gè)問(wèn)題,在這里為大家分享講解下
    2021-10-10
  • Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子

    Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子

    這篇文章主要介紹了Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子,需要的朋友可以參考下
    2014-04-04
  • Pandas Describe函數(shù)的具體使用

    Pandas Describe函數(shù)的具體使用

    在Pandas中,describe()能夠?yàn)閿?shù)據(jù)框中的數(shù)值列提供統(tǒng)計(jì)摘要信息,本文主要介紹了Pandas Describe函數(shù)的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02

最新評(píng)論

屏东市| 张家口市| 临沧市| 恩平市| 札达县| 璧山县| 南汇区| 苍南县| 墨脱县| 祥云县| 罗定市| 城固县| 清镇市| 瓦房店市| 额尔古纳市| 岑巩县| 全南县| 穆棱市| 张家界市| 肥西县| 澄迈县| 长治县| 丹阳市| 嘉义市| 莱州市| 萍乡市| 颍上县| 漳平市| 泰安市| 牟定县| 砚山县| 通州市| 涟源市| 余姚市| 隆子县| 鞍山市| 萍乡市| 乌兰浩特市| 铜川市| 砀山县| 陈巴尔虎旗|