亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

系列前言

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

API

API 來自 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ù)詳解

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

參數(shù)列表

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

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

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

縮放方式其一

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

import numpy as np
import cv2 as cv

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

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

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

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

縮放方式其二

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

注意,在 dsizefx 中間其實隔了一個無用的 dst,雖然沒有實際作用,但是這個參數(shù)確實存在,按照 Python 的函數(shù)傳參規(guī)則,要么指明實參傳遞給哪個形參,要么按順序傳參不能遺漏。具體看下面的例子,兩行的效果一致,都是將圖像橫向縮放為原來的 0.5 倍,縱向縮放為原來的 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) 來計算的,所以即使 fxfy 并不是0,只要這兩個計算結(jié)果中有一個是 0,也會報錯。

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

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

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

關(guān)于插值方式

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • python爬蟲工具例舉說明

    python爬蟲工具例舉說明

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲工具例舉說明內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-11-11
  • 基于Python的XSS測試工具XSStrike使用方法

    基于Python的XSS測試工具XSStrike使用方法

    XSS(Cross Site Scripting,跨站腳本攻擊)是一類特殊的Web客戶端腳本注入攻擊手段,通常指攻擊者通過“HTML注入”篡改了網(wǎng)頁,插入惡意的腳本,從而在用戶瀏覽網(wǎng)頁時控制瀏覽器的一種攻擊。
    2017-07-07
  • Python基礎(chǔ)之值傳遞和引用傳遞詳解

    Python基礎(chǔ)之值傳遞和引用傳遞詳解

    在python中,向函數(shù)傳遞參數(shù)的類型有兩種,一種是值傳遞,還有一種是引用傳遞。本篇文章將帶大家一起探究python中值傳遞和引用傳遞的使用,需要的可以參考一下
    2023-05-05
  • 用pyqt5 給按鈕設(shè)置圖標和css樣式的方法

    用pyqt5 給按鈕設(shè)置圖標和css樣式的方法

    今天小編就為大家分享一篇用pyqt5 給按鈕設(shè)置圖標和css樣式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python動態(tài)規(guī)劃實現(xiàn)虛擬機部署的算法思想

    Python動態(tài)規(guī)劃實現(xiàn)虛擬機部署的算法思想

    這篇文章主要介紹了Python動態(tài)規(guī)劃實現(xiàn)虛擬機部署的算法思想,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 手把手教你安裝Windows版本的Tensorflow

    手把手教你安裝Windows版本的Tensorflow

    這篇文章主要介紹了手把手教你安裝Windows版本的Tensorflow,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • pycharm創(chuàng)建scrapy項目教程及遇到的坑解析

    pycharm創(chuàng)建scrapy項目教程及遇到的坑解析

    這篇文章主要介紹了pycharm創(chuàng)建scrapy項目教程及遇到的坑解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python命令 -u參數(shù)用法解析

    python命令 -u參數(shù)用法解析

    這篇文章主要介紹了python命令 -u參數(shù)用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • PyCharm 設(shè)置SciView工具窗口的方法

    PyCharm 設(shè)置SciView工具窗口的方法

    今天小編就為大家分享一篇PyCharm 設(shè)置SciView工具窗口的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 通過python-turtle庫實現(xiàn)繪制圖畫

    通過python-turtle庫實現(xiàn)繪制圖畫

    turtle庫是python的基礎(chǔ)繪圖庫,經(jīng)常被用來給孩子們介紹編程知識的方法庫,是標準庫之一,利用turtle可以制作很多復(fù)雜的繪圖。本文將為大家介紹通過turtle庫繪制的一些有趣的圖畫,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12

最新評論