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