Python?OpenCV超詳細(xì)講解透視變換的實(shí)現(xiàn)
準(zhǔn)備工作
右擊新建的項(xiàng)目,選擇Python File,新建一個(gè)Python文件,然后在開(kāi)頭import cv2導(dǎo)入cv2庫(kù),import numpy并且重命名為np。
import cv2 import numpy as np

我們還要知道在OpenCV中,坐標(biāo)軸的方向是x軸向右,y軸向下,坐標(biāo)原點(diǎn)在左上角,比如下面這張長(zhǎng)為640像素,寬為480像素的圖片。OK,下面開(kāi)始本節(jié)的學(xué)習(xí)吧。

場(chǎng)景描述
給定任意一張圖像,從中分割出你需要的區(qū)域,并且以指定的大小顯示出來(lái)。而且分割出的圖像在線性空間中還是與顯示的窗口是平行的。就比如:我想要獲取下面的K,原圖中K是斜躺著的,分割后顯示出來(lái)應(yīng)該是豎直站立的。那么該如何實(shí)現(xiàn)這樣的效果呢?

在實(shí)現(xiàn)上述效果前,我們需要獲取些重要信息,比如說(shuō)上圖中撲克牌K的四個(gè)坐標(biāo)點(diǎn)。我們可以使用畫(huà)圖工具打開(kāi)這張圖片,然后將鼠標(biāo)放置在分割區(qū)域的四個(gè)點(diǎn)上,即可獲取到坐標(biāo)信息。
因?yàn)楫?huà)圖中圖像的寬高坐標(biāo)軸和OpenCV是一樣的,
當(dāng)我將鼠標(biāo)放到K左上角時(shí),畫(huà)圖的左下角就顯示出來(lái)(734像素,185像素),
這就是左上角這個(gè)點(diǎn)的坐標(biāo)。

透視變換
上面的要求實(shí)現(xiàn)看起來(lái)比較困難,但是用cv2庫(kù),實(shí)現(xiàn)起來(lái)其實(shí)只有9行代碼。
- 首先我們?cè)O(shè)置下輸出圖片的寬width為250,高h(yuǎn)eight為350。
- 然后讀取我們的圖片,就是上面這張圖。
- 定義目標(biāo)區(qū)域的四個(gè)點(diǎn)坐標(biāo),分別為:左上、右上、左下、右下。我們?cè)谏弦徊揭呀?jīng)獲取到了。
- pst2是輸出圖片在圖片框中的位置,選擇平鋪即可,固定寫(xiě)法。
- 使用庫(kù)函數(shù)
warpPerspective實(shí)現(xiàn)透視變換,感興趣的可以深入了解下原理。 - 最后輸出并且顯示兩張圖像。
width,height=250,350
img=cv2.imread("Resources/poker.jpg")
pst1=np.float32([[734,185],[1101,266],[621,679],[1030,789]])
pst2=np.float32([[0,0],[width,0],[0,height],[width,height]])
matrix=cv2.getPerspectiveTransform(pst1,pst2)
imgOutput=cv2.warpPerspective(img,matrix,(width,height))
cv2.imshow("Image",img)
cv2.imshow("Output",imgOutput)
cv2.waitKey(0)
我們來(lái)看下效果,左圖是我們透視變換的圖像,右圖是原圖像:

第五節(jié)的內(nèi)容,其實(shí)很有趣,在生活中有很多應(yīng)用。眼過(guò)千遍不如手過(guò)一遍,快去動(dòng)手敲一遍吧~
到此這篇關(guān)于Python OpenCV超詳細(xì)講解透視變換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python OpenCV 透視變換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- OpenCV通過(guò)透視變換實(shí)現(xiàn)矯正圖像詳解
- Java OpenCV圖像處理之仿射變換,透視變換,旋轉(zhuǎn)詳解
- OpenCV透視變換應(yīng)用之書(shū)本視圖矯正+廣告屏幕切換
- OpenCV實(shí)現(xiàn)透視變換矯正
- Python?Opencv基于透視變換的圖像矯正
- 詳解如何在pyqt中通過(guò)OpenCV實(shí)現(xiàn)對(duì)窗口的透視變換
- opencv3/C++ 平面對(duì)象識(shí)別&透視變換方式
- OpenCV圖像幾何變換之透視變換
- Opencv透視變換綜合實(shí)例詳解
- OpenCV實(shí)現(xiàn)透視變換的示例代碼
相關(guān)文章
python批量修改xml屬性的實(shí)現(xiàn)方式
這篇文章主要介紹了python批量修改xml屬性的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python實(shí)現(xiàn)根據(jù)指定端口探測(cè)服務(wù)器/模塊部署的方法
這篇文章主要介紹了Python根據(jù)指定端口探測(cè)服務(wù)器/模塊部署的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08
Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解
這篇文章主要為大家介紹了Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Python基于Tkinter模塊實(shí)現(xiàn)的彈球小游戲
這篇文章主要介紹了Python基于Tkinter模塊實(shí)現(xiàn)的彈球小游戲,涉及Python圖形繪制、數(shù)值計(jì)算、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
Python粒子煙花動(dòng)態(tài)效果實(shí)現(xiàn)
這篇文章主要介紹了Python實(shí)現(xiàn)粒子煙花動(dòng)態(tài)效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
Python數(shù)據(jù)處理pandas讀寫(xiě)操作IO工具CSV解析
這篇文章主要為大家介紹了Python?pandas數(shù)據(jù)讀寫(xiě)操作IO工具之CSV使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python 時(shí)間戳之獲取整點(diǎn)凌晨時(shí)間戳的操作方法
這篇文章主要介紹了Python 時(shí)間戳之獲取整點(diǎn)凌晨時(shí)間戳的操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-01-01
關(guān)于python的編碼與解碼decode()方法及zip()函數(shù)
這篇文章主要介紹了關(guān)于python的編碼與解碼decode()方法及zip()函數(shù),encode0?方法是字符串對(duì)象內(nèi)置的一個(gè)實(shí)現(xiàn)方法用于實(shí)現(xiàn)編碼操作,需要的朋友可以參考下2023-04-04

