こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonによる画像処理に興味がある。
- 画像データをリサイズ・圧縮する方法が知りたい。
OpenCVとは
OpenCV(Open Source Computer Vision Library)とは、画像処理やコンピュータビジョンの分野で広く活用されているオープンソースライブラリです。画像データの数値処理に強いのが特徴であり、高度な統計アルゴリズムも多数含まれていることから、近年機械学習の分野でも広く利用されています。
【Python】OpenCV|画像のリサイズ
PythonのOpenCVライブラリを用いて画像をリサイズする方法について解説します。
画像データの準備
はじめに、リサイズしたい画像データを準備してPythonのOpenCVでデータ読込確認するところから始めてみましょう。次のようにコードを記述します。
読み込む画像を選択
部分の読込画像のディレクトリを修正した上で実行してみましょう。
import cv2
# 読み込む画像を選択
img = cv2.imread("image_data.jpg")
# リサイズ前の画像サイズ出力
print("(高さ, 幅, 色)="+str(img.shape))
# オリジナル画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
画像をリサイズする
画像リサイズはcv2.resize()
メソッドをもとに実行できます。次のように記載しましょう。
import cv2
# 読み込む画像を選択
img = cv2.imread("image_data.jpg")
# サイズ設定|cv2では(幅、高さ)の順で数値を設定
size = (600,400)
# リサイズ
img_resize = cv2.resize(img, # 画像データを指定
size # リサイズ後のサイズを指定
)
# リサイズ後の画像サイズ出力
print("(高さ, 幅, 色)="+str(img_resize.shape))
# リサイズ後を表示
cv2.imshow("resize",img_resize)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.resize()
メソッドでは、第一引数に画像データを指定し、第二引数にリサイズ後のサイズ(幅, 高さ)を指定します。
【Python】OpenCV|画像の拡大・縮小
画像データを拡大・縮小する方法を解説します。
画像データの拡大・縮小を実行する場合、画素の補間という画像処理が行われます。画素の補間とは、隣接する画素間の画素値を数値計算により導出することで、画像の拡大・縮小を可能にする画像処理法を指します。画素の補間により、画像を拡大・縮小しても滑らかな画像を生成することができるようになります。
画像データの拡大・縮小もcv2.resize()
メソッドをもとに実行できます。その際、画素の補間に伴う計算手法としてinterpolation
という引数を追記するのがポイントです。
以下interpolationにて指定できる補間方法を示します。
画素の補間 | 概要 |
---|---|
INTER_LINEAR | ・バイリニア補間 ・2×2画素(4画素)を用いて輝度値を算出 |
INTER_AREA | ・ピクセルエリアの関係に基づくリサンプリング手法 ・画像を縮小した際に発生するモアレ対策に有効 |
INTER_CUBIC | ・バイキュービック補間 ・4×4画素(16画素)を用いて輝度値を算出 |
INTER_NEAREST | ・最近傍補間 ・最も近い位置にある画素を用いて輝度値を算出 |
INTER_LANCZOS4 | ・Lanczos法での補間 ・8×8画素(64画像)を用いて輝度値を算出 |
以下、いくつか画像データの拡大・縮小コード例を示します。
画像の拡大・縮小|INTER_AREA
import cv2
# 読み込む画像を選択
img = cv2.imread("image_data.jpg")
# サイズ設定|cv2では(幅、高さ)の順で数値を設定
size = (300,200)
# 画像拡大・縮小
img_inter_area = cv2.resize(img,size,interpolation = cv2.INTER_AREA)
# 画像表示
cv2.imshow("img",img_inter_area)
cv2.waitKey(0)
cv2.destroyAllWindows()
画像の拡大・縮小|INTER_LINEAR
import cv2
# 読み込む画像を選択
img = cv2.imread("image_data.jpg")
# サイズ設定|cv2では(幅、高さ)の順で数値を設定
size = (300,200)
# 画像圧縮
img_inter_linear = cv2.resize(img,size,interpolation = cv2.INTER_LINEAR)
# 画像表示
cv2.imshow("linear",img_inter_linear)
cv2.waitKey(0)
cv2.destroyAllWindows()
【参考】Python・OpenCVを用いた画像処理
当サイトでは、PythonのOpenCVライブラリを用いた画像処理ノウハウを多数公開しています。
用途 | 【Python×OpenCV】記事名 |
---|---|
画像変換 | 画像のリサイズ・拡大・縮小 |
画像変換 | 画像の回転・反転・平行移動|アフィン変換 |
画像変換 | 画像の明るさ調節|ガンマ補正 |
画像変換 | グレースケール・HSV・L*a*b|色空間の変換 |
画像変換 | モノクロ(白黒)画像変換|2値化処理 |
画像変換 | ヒストグラムの描画・ヒストグラム均一化処理 |
画像変換 | 画像上にテキスト・図形(直線・長方形・円)を描画 |
画像変換 | 画像の透視変換・遠近法 |
画像変換 | 画像のノイズ除去・平滑化 |
画像変換 | 画像の畳み込み(空間フィルタリング) |
特徴抽出 | エッジの検出方法 |
画像認識や物体検出を学ぶ上でおすすめの教材はこちらをご参考ください。
画像処理・コンピュータビジョンの勉強におすすめ入門本・動画教材7選|OpenCV解析結果をディープラーニングに適用!
「画像処理・コンピュータビジョン分野に興味があり、画像処理のプログラミングスキルを習得したい」「OpenCVを用いた画像解析手法を学びたい」このような方向けにおすすめの教材を紹介します。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら