图片透视变换操作
由于照相機硬件設(shè)備本身的誤差,可能會導(dǎo)致鏡頭畸變,從而導(dǎo)致照相機拍攝到的照片產(chǎn)生失真現(xiàn)象,此時可以通過透視變換去適當(dāng)?shù)男U?/h5>
大概的思路:在原圖像上確定四個點,然后再新圖像上也確定四個點,通過warpMatrix方法,確定出對應(yīng)的函數(shù)關(guān)系,從而將圖像進(jìn)行校正。
import cv2
import numpy as npimg = cv2.imread('beyond.png')
result3 = img.copy()#src和dst的輸入并不是圖像,而是圖像對應(yīng)的頂點坐標(biāo)
src = np.float32([[664,423],[1197,1144],[245,785],[709,1307]])#這個是你要截取物體的四個頂點坐標(biāo),這四個頂點需要知道
dst = np.float32([[0,0],[883,0],[0,560],[883,560]])#其實就是要校正物體的四個頂點坐標(biāo),也就是知道日歷的長和高即可
print(img.shape)#看一下原圖片的大小
#結(jié)果為:(1706, 1279, 3)#生成透視變換矩陣,進(jìn)行透視變換
m = cv2.getPerspectiveTransform(src,dst)#得到映射關(guān)系函數(shù)
print("warpMatrix:")
print(m)
#結(jié)果為:
'''
warpMatrix:
[[ 5.53592476e-01 6.40760353e-01 -6.38627034e+02][-6.16322870e-01 4.55617322e-01 2.16512258e+02][ 2.54107793e-04 -3.90561502e-04 1.00000000e+00]]
'''result = cv2.warpPerspective(result3,m,(883,560))
cv2.imshow("src",img)
cv2.imshow("result",result)
cv2.waitKey(0)
原圖:
日歷的坐標(biāo)我是用ps里面的標(biāo)尺看的,不一定特別精準(zhǔn)。
日歷四個頂點的位置在圖像上的像素坐標(biāo)為(行x軸,列y軸):[664,423],[1197,1144],[245,785],[709,1307]
日歷的長為883像素,高為560像素
運行后結(jié)果為:
(原圖片太大放不下,截取了一部分)
總結(jié)
- 上一篇: 哈尔滨治疗卵巢早衰最好的医院推荐
- 下一篇: 一天能取多少钱啊?