Python調用OpenCV幾何變換

這一篇就記錄三個:圖像縮放、平移和鏡像。

1、圖像縮放

圖像縮放用到的函數是cv2.resize()函數,函數原型如下:

resize(src, dsize, dst = None, fx = None, fy = None, interpolation = None)

OpenCV提供了幾種縮放方式:cv2.INTER_AREA、cv2.INTER_CUBIC、cv2.INTER_LINEAR和cv2.INTER_LINEAR,默認參數是cv2.INTER_LINEAR,這幾種方式在使用的時候有兩個建議,如果是縮小尺寸,建議用cv2.INTER_AREA,如果是放大建議用cv2.INTER_CUBIC和cv2.INTER_LINEAR,cv2.INTER_CUBIC的話可能會相對較慢。

2、平移

平移可以先構造一個平移矩陣,然後傳遞給cv2.warpAffine()函數做模板進行平移,該平移矩陣可以通過numpy來構造實現:

src = cv2.imread('lena.bmp')
rows = src.shape[0]
cols = src.shape[1]

cv2.imshow('src', src)
M = np.float32([[1, 0, 100], [0, 1, 50]])
dst = cv2.warpAffine(src, M, (cols, rows))

cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

結果顯示如下:

 

3、鏡像

水平鏡像和垂直鏡像的實現都可以使用cv2.flip來實現:

cv.flip(src,0,dst) #垂直鏡像
cv.flip(src,1,dst) #水平鏡像
cv.flip(src,-1,dst) #主對角鏡像

 

人生並非只有一處

繽紛爛漫

那凋零的是花

——不是春天

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章