日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

python+opencv圖像處理(十二)

 pythonjava學(xué)習(xí) 2021-04-06

圖像仿射變換和透視變換

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

這三個原點以及三個變換后的點呢,就組成了一個變換矩陣M。
opencv提供了根據(jù)變換前后三個點的對應(yīng)關(guān)系來自動求解M。這個函數(shù)是M=cv2.getAffineTransform(pos1,pos2),其中兩個位置就是變換前后的對應(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]])#原來三個點的位置
pts2 = np.float32([[20,20],[rows-50,50],[100,cols-100]])#變換后三個點的位置
M = cv2.getAffineTransform(pts1,pts2)#合成變換矩陣
res = cv2.warpAffine(img,M,(cols,rows))#第三個參數(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、透視變換
對于透視變換,需要確定四個點的位置,其四個點對應(yīng)的位置如下圖。

可以通過opencv的函數(shù)cv2.getPerspectiveTransform找到變換矩陣. 然后將cv2.warpPerspective應(yīng)用于此3x3變換矩陣,即可完成透視變換。
有一種說法是說,通過透視變換可以將平行四邊形變?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]])#原圖四個角點的位置,我的第三個點位置沒找對,所以結(jié)果圖只有12,4三個點進(jìn)行了拉伸,而第3個點沒變。
pts2 = np.float32([[0,0],[rows,0],[0,cols],[rows,cols]])#結(jié)果圖的四個點對應(yīng)的位置,我這里是四個頂點
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()

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多