【OpenCV數字影象處理】(4) 【Python程式設計】(4) 平移
阿新 • • 發佈:2019-01-02
配套使用的OpenCV版本:2.4.9 ; Python版本:2.7
主要參考文章(感謝作者分享)
程式極其類似於參考文章1、文章1使用的是OpenCV2.0,而OpenCV2.49的寫法稍有不同
效果參考文章1,語法參考文章2
主要思想(轉載自文章1):
平移是最簡單的一種變換,是將一幅影象上的所有點都被按照給定的偏移量在水平方向沿X軸、在垂直方向沿y軸移動
其變換公式是
可用矩陣變換公式
逆變換方法是
若移動後大小不變
當多餘部分填充為黑色時
平移結果為
當多餘部分為白色時
平移結果為
若移動後圖像尺寸變大
則平移結果為
最終程式碼:
#-*-coding:utf-8-*- #解決中文註釋問題 import cv2 import numpy as np image = cv2.imread('feng.png') offX = 20 offY = 50 #print(image.shape) #image.shape表示影象的尺寸和通道資訊(高,寬,通道) size2 = (image.shape[0]+offY, image.shape[1]+offX,image.shape[2]) iTr1 = np.zeros(image.shape, np.uint8) iTr2 = np.zeros(image.shape, np.uint8) iTr3 = np.zeros(size2,np.uint8) h = image.shape[0] w = image.shape[1] for i in range(h): for j in range(w): iTr3[i+offY,j+offX] = image[i,j] if i >=offY and j >=offX: iTr1[i,j] = image[i-offY,j-offX] iTr2[i,j] = image[i-offY,j-offX] else: iTr1[i,j] = (0,0,0) #平移補黑(預設) iTr2[i,j] = (255,255,255) #平移補白 cv2.imshow('image',image) cv2.imshow('iTr1',iTr1) cv2.imshow('iTr2',iTr2) cv2.imshow('iTr3',iTr3) cv2.waitKey (0) cv2.destroyAllWindows()
若不進行處理。是一副黑色的影象4
即每個畫素點都是0或是tuple(0,0,0)
效果圖:
PS:參考文章1作者本意應該是x座標平移20,y座標平移30,結果弄反了;
本文為使結果更加明顯,x座標平移20,y座標平移50