這一篇就記錄三個:圖像縮放、平移和鏡像。
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) #主對角鏡像
人生並非只有一處
繽紛爛漫
那凋零的是花
——不是春天