4-3 ひずみ補正等に使える並行四辺形変換「スキュー変換(垂直)」
import math as m
img_src = cv2.imread("data/img_4-3.bmp")
eight,width,ch = img_src.shape
"""
warpAffine
画像のアフィン変換を行います.
パラメタ:
src – 入力画像
M – 2×3 の変換行列
dsize – 出力画像のサイズ
flags – 補間手法( resize() を参照してください)と, M が逆変換( dst \rightarrow src )であることを意味するオプションフラグ WARP_INVERSE_MAP の組み合わせ
borderMode – ピクセル外挿手法. borderInterpolate() を参照してください. borderMode = BORDER_TRANSPARENT の場合,入力画像中の「はずれ値」に対応する出力画像中のピクセルが,この関数では変更されないことを意味します
borderValue – 定数境界モードで利用されるピクセル値.デフォルトでは 0 です
"""
deg = m.tan(m.pi/6)
mat = np.float32(
[[1,0,0],
[-deg,1,eight-1]])
img_dst = cv2.warpAffine(img_src,mat,(width,int(eight+width*deg)))
#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()