Interface2017年05月号新画像処理101を読む

技4 変形/移動 処理

4-1 画像を変形したいとき使う回転変形

img_src = cv2.imread("data/img_4-1.bmp")
eight,width,ch = img_src.shape
"""
getRotationMatrix2D
回転変換行列の算出
パラメタ:
center – 入力画像中にある回転中心
angle – 度単位で表される回転角度.正の値は反時計回りを意味します(座標原点が,左上コーナーにあると仮定されます)
scale – 等方性のスケールファクタ
"""
"""
warpAffine
画像のアフィン変換を行います.

パラメタ:
src – 入力画像
M – 2×3 の変換行列
dsize – 出力画像のサイズ
flags – 補間手法( resize() を参照してください)と, M が逆変換( dst  \rightarrow src )であることを意味するオプションフラグ WARP_INVERSE_MAP の組み合わせ
borderMode – ピクセル外挿手法. borderInterpolate() を参照してください. borderMode = BORDER_TRANSPARENT の場合,入力画像中の「はずれ値」に対応する出力画像中のピクセルが,この関数では変更されないことを意味します
borderValue – 定数境界モードで利用されるピクセル値.デフォルトでは 0 です
"""
mat = cv2.getRotationMatrix2D((width/2,eight/2),45,1)
img_dst = cv2.warpAffine(img_src,mat,(width,eight))
#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

f:id:bitop:20180218070629p:plain

f:id:bitop:20180218070700p:plain