python: 画像を射影変換する

プログラミング
スポンサーリンク




こんにちは、おみです。

写真を撮った時に、「ちょっと傾いちゃってるなー できれば真っ直ぐにしたいなー」という時がよくあります。

そんな時に、このソースを使えば画像を正面から撮ったように補正をかけることができます。

スポンサーリンク

ソースコード

↓ソース内で使用している変換前の画像です。「before_triple.png」というファイル名で保存してください。

 

import cv2
import numpy as np

# 画像を読み込み
path = 'before_triple.png'
before = cv2.imread(path)

cv2.imshow("before", before)

# 変換前後の画像の対応点を生成(エッジ検出等で自動的に生成しないと他の画像ではうまく行きません。)
cdn_before = np.float32([[86, 32], [2270, 32], [30, 210], [2330, 210]])
cdn_after = np.float32([[0, 0], [2250, 0], [0, 180], [2250, 180]])

# 射影変換
ptf = cv2.getPerspectiveTransform(cdn_before, cdn_after)
after = cv2.warpPerspective(before, ptf, (2250, 180))


# 画像をファイルに出力
cv2.imwrite("after_triple.png", after)

# 画像を表示
cv2.imshow("after", after)
cv2.waitKey(0)
cv2.destroyAllWindows()

↓変換後画像

参考

Python, OpenCVで幾何変換(アフィン変換・射影変換など) | note.nkmk.me
Python, OpenCVで画像の幾何変換(線形変換・アフィン変換・射影変換)を行うには関数cv2.warpAffine()およびcv2.warpPerspective()を使う。ここでは以下の内容について説明する。幾何変換(幾何学的変換)の種類線形変換同次座標で表す変換アフィン変換射影変換 線形変換 同次座標で表す...

コメント

  1. […] […]

タイトルとURLをコピーしました