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

OpenCV+Imutils實(shí)現(xiàn)圖像的旋轉(zhuǎn)操作

 更新時(shí)間:2022年05月16日 09:15:50   作者:woshicver  
imutils是在OPenCV基礎(chǔ)上的一個(gè)封裝,達(dá)到更為簡結(jié)的調(diào)用OPenCV接口的目的,它可以輕松的實(shí)現(xiàn)圖像的平移,旋轉(zhuǎn),縮放,骨架化等一系列的操作。本文將用其實(shí)現(xiàn)圖像的旋轉(zhuǎn)操作,感興趣的可以學(xué)習(xí)一下

前言 

本文,將描述使用 OpenCV 和 Imutils 圍繞任意點(diǎn)旋轉(zhuǎn)指定角度的圖像所需的步驟。

使用 OpenCV 旋轉(zhuǎn)圖像

使用 OpenCV 旋轉(zhuǎn)圖像:

1.使用 OpenCV 的 imread 函數(shù)加載所需的圖像。

腳本:加載并顯示原始圖像

# import required library
import cv2
 
# load image from disk
image = cv2.imread('eiffel_tower.jpg')
 
# display image
cv2.imshow('Original image', image)
cv2.waitKey(0)

導(dǎo)入了 OpenCV 庫并使用 imread 函數(shù)從工作目錄加載了埃菲爾鐵塔的圖像,然后使用 imshow 函數(shù)顯示圖像。

請(qǐng)注意,如果圖像不在工作目錄中,則提供給 imread 函數(shù)的參數(shù)值應(yīng)包含圖像的路徑。

輸出:

2.獲取圖像的空間維度(高度、寬度、中心坐標(biāo))。

腳本:獲取圖像的高度、寬度和中心坐標(biāo)。

# get the dimensions of the image and calculate the center of the
# image
height, width = image.shape[:2]
centerX, centerY = (width // 2, height // 2)

image.shape屬性的前兩個(gè)值分別返回圖像的高度和寬度。整數(shù)除法用于獲取中心位置的值,因?yàn)樾D(zhuǎn)圖像的函數(shù)只接受整數(shù)值。中心位置值對(duì)于圍繞中心旋轉(zhuǎn)圖像很有用。

3.定義一個(gè)旋轉(zhuǎn)矩陣以圍繞所需的點(diǎn)和旋轉(zhuǎn)角度旋轉(zhuǎn)圖像。

腳本:定義一個(gè)旋轉(zhuǎn)矩陣以將圖像圍繞中心旋轉(zhuǎn) 45?。

# # rotate our image by 45 degrees around the center of the image
 
# get rotation matrix
M = cv2.getRotationMatrix2D((centerX, centerY), 45, 1.0)

cv2.getRotationMatrix2D函數(shù)(顧名思義)定義了一個(gè)二維矩陣,用于根據(jù)傳遞的參數(shù)值旋轉(zhuǎn)圖像。

該函數(shù)采用旋轉(zhuǎn)點(diǎn)參數(shù)(在此示例中,圖像的中心由坐標(biāo)(centerX , centerY)表示)、以度為單位的旋轉(zhuǎn)角度(在本例中為45度)和浮點(diǎn)值(在本例中為1.0 )指定旋轉(zhuǎn)圖像相對(duì)于原始圖像的比例。

我們示例中的1.0比例值將旋轉(zhuǎn)后的圖像縮放為與原始圖像相同的尺寸。較高的比例值會(huì)擴(kuò)大圖像,而較低的值會(huì)縮小圖像。

4.根據(jù)旋轉(zhuǎn)矩陣對(duì)圖像進(jìn)行旋轉(zhuǎn),并顯示旋轉(zhuǎn)后的圖像。

腳本:將圖像圍繞中心旋轉(zhuǎn) 45?。

# rotate image
rotated = cv2.warpAffine(image, M, (width, height))
 
# display image
cv2.imshow("Rotated by 45 Degrees", rotated)
cv2.waitKey(0)

旋轉(zhuǎn)矩陣 (M) 被傳遞給cv2.warpAffine函數(shù),該函數(shù)根據(jù)旋轉(zhuǎn)矩陣中指定的值對(duì)圖像應(yīng)用旋轉(zhuǎn)。該函數(shù)還將圖像寬度和高度的元組作為參數(shù)。

輸出:

圖像圍繞中心旋轉(zhuǎn) 450。注意圖像是逆時(shí)針方向旋轉(zhuǎn)的嗎?我們還可以通過在旋轉(zhuǎn)矩陣中傳遞旋轉(zhuǎn)角度的負(fù)值來順時(shí)針旋轉(zhuǎn)圖像。

使用 OpenCV 順時(shí)針旋轉(zhuǎn)圖像

腳本:

# rotate the image by 90 degrees in clockwise direction
M = cv2.getRotationMatrix2D((centerX, centerY), -90, 0.5)
rotated = cv2.warpAffine(image, M, (width, height))
cv2.imshow("Rotated by -90 Degrees", rotated)
cv2.waitKey(0)

輸出:

讓我們比較一下如果我們通過 90?(逆時(shí)針 90? 旋轉(zhuǎn))作為旋轉(zhuǎn)角度而不是 -90? 的情況。

請(qǐng)注意,圖像以逆時(shí)針方向旋轉(zhuǎn),還將圖像比例縮小了一半(通過傳遞 0.5 作為比例值)。

雖然之前已經(jīng)沿中心(centerX, centerY)旋轉(zhuǎn)了圖像,但可以使用前面提到的類似步驟圍繞圖像中的任意點(diǎn)旋轉(zhuǎn)圖像。

圍繞任意點(diǎn)旋轉(zhuǎn)圖像

腳本:將圖像圍繞點(diǎn) (15, 10) 旋轉(zhuǎn) 30 度。

# rotate our image around an arbitrary point
M = cv2.getRotationMatrix2D((15, 10), 30, 1.0)
rotated = cv2.warpAffine(image, M, (width, height))
cv2.imshow("Rotated around an  Arbitrary Point", rotated)
cv2.waitKey(0)

輸出:

旋轉(zhuǎn)如何切斷圖像的某些部分?我將在本文后面展示如何避免這種情況。

使用 Imutils 旋轉(zhuǎn)圖像

就像移動(dòng)圖像一樣,Imutils 包提供了使用簡單易用的旋轉(zhuǎn)輔助函數(shù)沿任意點(diǎn)和任意角度旋轉(zhuǎn)圖像的簡單步驟。

腳本:使用 Imutils 將圖像順時(shí)針旋轉(zhuǎn) 30?。

# rotate our image around an arbitrary point
M = cv2.getRotationMatrix2D((15, 10), 30, 1.0)
rotated = cv2.warpAffine(image, M, (width, height))
cv2.imshow("Rotated around an  Arbitrary Point", rotated)
cv2.waitKey(0)

調(diào)用 imutils.rotate函數(shù),通過將圖像和旋轉(zhuǎn)角度作為參數(shù)傳遞,將圖像沿所需方向旋轉(zhuǎn)。

輸出:

就像在前面的圖像中一樣,旋轉(zhuǎn)會(huì)切斷圖像的某些部分,雖然這可能在某些用例中是有意的,但我們可以編寫代碼,確保圖像的所有部分仍然在視圖中。

腳本:將圖像旋轉(zhuǎn) 30?,同時(shí)確保整個(gè)圖像都在視圖中。

# rotate the image by 30 degrees, ensuring the
# entire rotated image still views in the viewing area
rotated = imutils.rotate_bound(image, -30)
cv2.imshow("Rotated Without Cropping", rotated)
cv2.waitKey(0)

輸出:

這次使用 cv2.rotate_bound 輔助函數(shù)而不是旋轉(zhuǎn)函數(shù)來確保圖像的所有部分都在旋轉(zhuǎn)后的圖像中。

總結(jié)

本文展示了使用OpenCV和imutil 包圍繞中心或任何其他任意點(diǎn)以順時(shí)針或逆時(shí)針方向旋轉(zhuǎn)圖像所需的步驟。還展示了如何旋轉(zhuǎn)圖像以保留完整視圖,而不裁剪任何部分。

到此這篇關(guān)于OpenCV+Imutils實(shí)現(xiàn)圖像的旋轉(zhuǎn)操作的文章就介紹到這了,更多相關(guān)OpenCV Imutils圖像旋轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch Tensor的索引與切片例子

    Pytorch Tensor的索引與切片例子

    今天小編就為大家分享一篇Pytorch Tensor的索引與切片例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 詳解Django的CSRF認(rèn)證實(shí)現(xiàn)

    詳解Django的CSRF認(rèn)證實(shí)現(xiàn)

    這篇文章主要介紹了詳解Django的CSRF認(rèn)證實(shí)現(xiàn),詳細(xì)的介紹了csrf原理和實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python實(shí)現(xiàn)定時(shí)備份mysql數(shù)據(jù)庫并把備份數(shù)據(jù)庫郵件發(fā)送

    Python實(shí)現(xiàn)定時(shí)備份mysql數(shù)據(jù)庫并把備份數(shù)據(jù)庫郵件發(fā)送

    這篇文章主要介紹了Python實(shí)現(xiàn)定時(shí)備份mysql數(shù)據(jù)庫并把備份數(shù)據(jù)庫郵件發(fā)送的相關(guān)資料,需要的朋友可以參考下
    2018-03-03
  • 使用python分析統(tǒng)計(jì)自己微信朋友的信息

    使用python分析統(tǒng)計(jì)自己微信朋友的信息

    這篇文章主要介紹了python分析統(tǒng)計(jì)自己微信朋友的信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python Yaml、Json、Dict之間的轉(zhuǎn)化

    python Yaml、Json、Dict之間的轉(zhuǎn)化

    這篇文章主要介紹了python Yaml 、Json 、Dict 之間的轉(zhuǎn)化的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-10-10
  • opencv設(shè)置采集視頻分辨率方式

    opencv設(shè)置采集視頻分辨率方式

    今天小編就為大家分享一篇opencv設(shè)置采集視頻分辨率方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python的Tqdm模塊實(shí)現(xiàn)進(jìn)度條配置

    Python的Tqdm模塊實(shí)現(xiàn)進(jìn)度條配置

    這篇文章主要介紹了Python的Tqdm模塊實(shí)現(xiàn)進(jìn)度條配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 關(guān)于Python中異常(Exception)的匯總

    關(guān)于Python中異常(Exception)的匯總

    異常是指程序中的例外,違例情況。異常機(jī)制是指程序出現(xiàn)錯(cuò)誤后,程序的處理方法。當(dāng)出現(xiàn)錯(cuò)誤后,程序的執(zhí)行流程發(fā)生改變,程序的控制權(quán)轉(zhuǎn)移到異常處理。下面這篇文章主要匯總了關(guān)于Python中異常(Exception)的相關(guān)資料,需要的朋友可以參考下。
    2017-01-01
  • Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為

    Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為

    這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    相關(guān)系數(shù)矩陣是一種用于衡量變量之間關(guān)系的重要工具,本文將介紹在 Python 中創(chuàng)建相關(guān)系數(shù)矩陣的不同方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12

最新評(píng)論