こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
こんな方におすすめ
- Pythonによる画像処理に興味がある。
- OpenCVの透視変換を適用し「遠近感のある画像」を出力したい。
目次
OpenCVとは
OpenCV(Open Source Computer Vision Library)とは、画像処理やコンピュータビジョンの分野で広く活用されているオープンソースライブラリです。画像データの数値処理に強いのが特徴であり、高度な統計アルゴリズムも多数含まれていることから、近年機械学習の分野でも広く利用されています。
透視変換とは
透視変換とは、遠近感ある三次元の空間図形を二次元平面に投影する手法です。遠方にある図形は小さくなる遠近法で描写され、奥行きのある空間が二次元平面上に表現されるようになります。
【Python×OpenCV】透視変換を適用した3次元立体画像の出力
PythonのOpenCVライブラリを用いて透視変換を適用する方法について解説します。
画像読込
部分に透視変換を適用したい画像のディレクトリを設定し、コードを実行してみましょう。
import cv2
import numpy as np
# 画像読込
img = cv2.imread("image_data.jpg")
# 画像サイズ
height = img.shape[0] # 高さ
width = img.shape[1] # 幅
# 視点を設定
potision_bfr = np.float32([[100,600],[200,600],[300,150],[100,100]]) # オリジナル
potision_aft = np.float32([[100,600],[200,600],[250,250],[150,200]]) # 変換後
# 透視変換の行列
psp_matrix = cv2.getPerspectiveTransform(potision_bfr, # オリジナル
potision_aft, # 変換後
)
# 透視変換
psp_img = cv2.warpPerspective(img, # 入力画像
psp_matrix, # 変換行列
(width,height) # 解像度
)
# 画像表示
cv2.imshow("img",psp_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
透視変換では、視点位置の変換前後の対応関係を定義することで、多様な遠近感ある空間図形を出力できるようになります。
【参考】Python・OpenCVを用いた画像処理
当サイトでは、PythonのOpenCVライブラリを用いた画像処理ノウハウを多数公開しています。
用途 | 【Python×OpenCV】記事名 |
---|---|
画像変換 | 画像のリサイズ・拡大・縮小 |
画像変換 | 画像の回転・反転・平行移動|アフィン変換 |
画像変換 | 画像の明るさ調節|ガンマ補正 |
画像変換 | グレースケール・HSV・L*a*b|色空間の変換 |
画像変換 | モノクロ(白黒)画像変換|2値化処理 |
画像変換 | ヒストグラムの描画・ヒストグラム均一化処理 |
画像変換 | 画像上にテキスト・図形(直線・長方形・円)を描画 |
画像変換 | 画像の透視変換・遠近法 |
画像変換 | 画像のノイズ除去・平滑化 |
画像変換 | 画像の畳み込み(空間フィルタリング) |
特徴抽出 | エッジの検出方法 |
画像認識や物体検出を学ぶ上でおすすめの教材はこちらをご参考ください。
画像処理・コンピュータビジョンの勉強におすすめ入門本・動画教材7選|OpenCV解析結果をディープラーニングに適用!
「画像処理・コンピュータビジョン分野に興味があり、画像処理のプログラミングスキルを習得したい」「OpenCVを用いた画像解析手法を学びたい」このような方向けにおすすめの教材を紹介します。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら