免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
python+opencv圖像處理(十二)

圖像仿射變換和透視變換

天晴了......
1、仿射變換
圖像仿射變換就是圖像的旋轉(zhuǎn)加上拉升,說(shuō)直白點(diǎn),就是把矩形變成平行四邊形。
要把矩形變成平行四邊行,只需要拉伸其四個(gè)角點(diǎn)就行了,事實(shí)上,只需要確定前面三個(gè)點(diǎn),最后一個(gè)點(diǎn)自然就能確定了。
也就是要改變下圖所示的三個(gè)點(diǎn)的值,對(duì)應(yīng)到新的平行四邊形上相應(yīng)的三個(gè)點(diǎn)即可。

這三個(gè)原點(diǎn)以及三個(gè)變換后的點(diǎn)呢,就組成了一個(gè)變換矩陣M。
opencv提供了根據(jù)變換前后三個(gè)點(diǎn)的對(duì)應(yīng)關(guān)系來(lái)自動(dòng)求解M。這個(gè)函數(shù)是M=cv2.getAffineTransform(pos1,pos2),其中兩個(gè)位置就是變換前后的對(duì)應(yīng)位置關(guān)系。輸出的就是仿射矩陣M。
然后在使用函數(shù)cv2.warpAffine()即可完成仿射變換。
如下圖所示,左圖是原圖,右圖是仿射變換之后的結(jié)果圖。

其代碼如下:
from matplotlib import pyplot as plt
import cv2
import numpy as np
img = cv2.imread('E:/image/le.jpg')
print(img.shape)
rows,cols = img.shape[:2]
pts1 = np.float32([[0,0],[rows-1,0],[0,cols-1]])#原來(lái)三個(gè)點(diǎn)的位置
pts2 = np.float32([[20,20],[rows-50,50],[100,cols-100]])#變換后三個(gè)點(diǎn)的位置
M = cv2.getAffineTransform(pts1,pts2)#合成變換矩陣
res = cv2.warpAffine(img,M,(cols,rows))#第三個(gè)參數(shù):變換后的圖像大小
#顯示圖像
plt.subplot(121)
plt.imshow(img[:,:,[2,1,0]])
plt.axis('off')
plt.title("yuan")
plt.subplot(122)
plt.imshow(res[:,:,[2,1,0]])
plt.axis('off')
plt.title("dst")
plt.show()
2、透視變換
對(duì)于透視變換,需要確定四個(gè)點(diǎn)的位置,其四個(gè)點(diǎn)對(duì)應(yīng)的位置如下圖。

可以通過(guò)opencv的函數(shù)cv2.getPerspectiveTransform找到變換矩陣. 然后將cv2.warpPerspective應(yīng)用于此3x3變換矩陣,即可完成透視變換
有一種說(shuō)法是說(shuō),通過(guò)透視變換可以將平行四邊形變?yōu)榫匦巍?/span>
如下圖所示,左圖為原圖,右圖為透視變換后的圖。

其代碼如下:
import cv2
import numpy as np
import matplotlib.pylab  as plt
img = cv2.imread('E:/image/ch.jpg')
print(img.shape)
rows,cols,ch = img.shape
pts1 = np.float32([[20,20],[rows-50,50],[0,cols],[rows-50,cols-50]])#原圖四個(gè)角點(diǎn)的位置,我的第三個(gè)點(diǎn)位置沒(méi)找對(duì),所以結(jié)果圖只有1,2,4三個(gè)點(diǎn)進(jìn)行了拉伸,而第3個(gè)點(diǎn)沒(méi)變。
pts2 = np.float32([[0,0],[rows,0],[0,cols],[rows,cols]])#結(jié)果圖的四個(gè)點(diǎn)對(duì)應(yīng)的位置,我這里是四個(gè)頂點(diǎn)
M = cv2.getPerspectiveTransform(pts1,pts2)#合成變換矩陣
dst = cv2.warpPerspective(img,M,(cols,rows))#進(jìn)行變換
#以下為顯示圖像
plt.subplot(121),plt.imshow(img[:,:,[2,1,0]]),plt.title('Input'),plt.axis('off')
plt.subplot(122),plt.imshow(dst[:,:,[2,1,0]]),plt.title('Output'),plt.axis('off')
plt.show()
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
OpenCV-Python 圖像的幾何變換 | 十四
仿射變換
opencv 傅立葉變換演示
還在用PS給證件照換底色嗎?20行代碼教你用Python給證件照換底色
opencv-矩陣操作總結(jié)
OpenCV參考手冊(cè)之Mat類詳解(一)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服