みなさんこんにちは!みやしんです。
今回はOpenCVを使った画像処理の1つ、リサイズや回転についてご紹介していきたいと思います。

OpenCVって人気だから楽しみだニャー!
事前準備
まずは画像の準備をします。
今回はやっぱり「ネコ!」ではなく、かわいいワンちゃんの画像を加工したいと思います。
まずはどんな画像か確認してみましょう。

かわいいワンちゃんが表示されました!
コピペ用のサンプルコードです。
# OpenCVをインポート
import cv2
# Jupyter notebook上に画像を表示するだけならIPython.displayモジュールのImage関数が使いやすい
from IPython.display import Image
# 参照画像を表示、ファイル名はdog.jpg
Image("./dog.jpg")
jupyter notebook上に画像を表示するならIPython.displayモジュールのImage関数が使いやすい!
from IPython.display import Image
Image(“./dog.jpg”)
画像のリサイズ cv2.resize()
続きです。
画像を読み込んでまずはリサイズ(3倍に拡大)します。
下記のようにコーディングします。


ワンちゃんが大きくなりました!
コピペ用のサンプルコードです。
# 画像の読込 (指定したパスの画像をimread関数で読込)
img = cv2.imread("./dog.jpg")
# 高さ、幅の定義 (shape[0]が高さ、shape[1]が幅)
height = img.shape[0]
width = img.shape[1]
# 画像を3倍に拡大する
img_expansion = cv2.resize(img, (int(width*3.0), int(height*3.0)))
# 加工後の画像を保存
cv2.imwrite("./resize_dog.jpg", img_expansion)
# 拡大した画像を表示
Image("./resize_dog.jpg")
画像の読込:img = cv2.imread(“パス”)
高さはshape[0]、幅はshape[1]で定義:heigjt = img.shape[0] width = img.shape[1]
画像のリサイズ:cv2.resize(img, (int(width*倍率), int(height*倍率))
python、機械学習、DeepLerningについて勉強をしたい方はUdemyをおススメします。
python、DeepLearning、機械学習を勉強したい方にUdemyをおススメしています。プログラミング初心者も安心です。
実践経験を積んだ講師も多く、実践で活用しやすい内容の講義を聞くことも出来ます。
書籍で勉強するとアカデミック寄りな内容が多いこともあり実践で使いにくいことも多いと思います。
講座数もかなり多く、プログラミング初心者用の講座もたくさんあります。
また、講座ごとの評価も見れ、購入前の視聴や返金保証制度もありますので受講後に後悔することもなく安心です。
プログラミングスクールに通うよりも安く、自分の好きな時間に興味のあるものだけを受講できるので効率も良く忙しい方にもオススメです。

画像の回転 cv2.getRotationMatrix2D()
それでは最後に画像を回転させます。
回転中心、回転角度、倍率を決めて加工します。
画像の回転にはOpenCVのgetRotationMatrix2D(回転中心, 回転角度, 倍率)を使って回転行列を作成し、warpAffine関数を使ってアフィン変換(拡大縮小、回転、平行移動を組み合わせた変換)を行います。


ワンちゃんが1.5倍に拡大&45°回転しました。
コピペ用のサンプルコードです。
# 回転中心を画像の中心に定義
center = (int(width/2), int(height/2))
# 回転角度を指定
angle = 45.0
# スケールを指定
scale = 1.5
# getRotationMatrix2D関数を使用
trans = cv2.getRotationMatrix2D(center, angle, scale)
# 画像を表示できるようにアフィン変換
img_rotated = cv2.warpAffine(img, trans, (width, height))
# 加工した画像を保存
cv2.imwrite("./rotate_dog.jpg", img_rotated)
# 画像を表示
Image("./rotate_dog.jpg")
画像の回転は下記の2ステップが重要!
STEP1、getRotationMatrix2D(回転中心, 回転角度, 倍率)を使って回転行列を作成
STEP2、warpAffine関数を使ってアフィン変換(拡大縮小、回転、平行移動を組み合わせた変換)
cv2.warpAffine(元画像, 回転行列, (width, height))
画像の加工は以上になります!
もっと画像の加工方法を知りたい方、加工した画像を使ってディープラーニングをしたい方は下記の記事もおススメです!
合わせて読みたい
Python、AI、機械学習について、初心者の方、プログラミングスクールに興味のある方、E資格を取得したい方、更に実践的なスキルを磨きたい方は下記の記事もご参考ください。
Pillowを使って同様な画像処理を行っています。
加工した画像から物体検出のファインチューニングにチャレンジしてみませんか?(^^)
また、OpenCVについてもっと勉強したい方は書籍もおススメです!

以上になります。ありがとうございました!!






コメント