【Pythonで画像認識入門 第1回】Pythonに「見る」力を!OpenCVの導入と画像の基本操作 👁️
「自動運転の車はどうやって白線や人を認識しているの?」
「スマホの顔認証って、どんな仕組みで動いているんだろう?」
「Pythonで、画像の中にあるものを自動で見つけ出すことってできるの?」
こんにちは! Python探検隊、隊長のPythonistaです! これまで私たちは、テキストデータや数値データを扱ってきましたが、今回から始まる新シリーズでは、全く新しい領域、**コンピュータビジョン(Computer Vision)**の世界を探検します!
コンピュータビジョンとは、一言で言えば、**コンピュータに人間のような「視覚」を与える技術**のことです。そして、そのための最も強力でポピュラーな武器が、オープンソースライブラリである**OpenCV**です。このシリーズを通して、私たちはPythonとOpenCVを使い、プログラムに「見る」力を与える方法を学んでいきます。
第1回となる今回は、その壮大な冒険への第一歩。OpenCVをインストールし、**画像を読み込み、画面に表示し、簡単な加工を施して保存する**という、全ての基本となる操作をマスターします。さあ、デジタルの世界に目を開きましょう!
1. コンピュータビジョンとOpenCVって何?
1.1. コンピュータにとっての「画像」とは?
私たちが「美しい風景写真」として認識している画像も、コンピュータにとっては単なる**数字の羅列**に過ぎません。画像は、**ピクセル(画素)**と呼ばれる小さな色の点の集まりでできています。コンピュータは、この各ピクセルの色情報(例: 赤255, 緑100, 青50)を、巨大な**数値の行列(配列)**として扱っています。
コンピュータビジョンとは、この膨大な数値の行列から、人間が認識するような「意味のある情報」(顔、文字、物体など)を抽出し、理解するための技術分野なのです。
1.2. OpenCVの役割
OpenCV (Open Source Computer Vision Library)は、この複雑な画像処理を手助けしてくれる、非常に強力なライブラリです。本来なら難しい数学の計算が必要な処理(例: 顔の特徴点を探す、物体の輪郭を抽出する)を、OpenCVはたった一行のシンプルな関数で実行できるようにしてくれます。
2. 準備:OpenCVのインストール
OpenCVもpipを使って簡単にインストールできます。ターミナルやコマンドプロンプトで以下のコマンドを実行してください。OpenCVは内部でNumPyを多用するため、NumPyも同時にインストールされます。
pip install opencv-python
インストールが完了したら、Pythonスクリプトでimport cv2
と書くことでOpenCVの機能を使えるようになります。(cv2
という名前なのは歴史的な経緯によるものです。)
3. 画像操作の第一歩:読み込み、表示、保存
それでは、実際に画像ファイルを操作してみましょう。適当な画像ファイル(例: `test_image.jpg`)を、Pythonスクリプトと同じディレクトリに用意してください。
3.1. 画像の読み込みと表示
以下のコードは、画像を読み込んで、新しいウィンドウに表示するための最も基本的なプログラムです。
【重要ポイント】 cv2.imshow()
で表示したウィンドウは、cv2.waitKey()
がないとすぐに消えてしまいます。これは、プログラムが一瞬で最後まで実行されてしまうためです。cv2.waitKey(0)
でプログラムを一時停止させ、キー入力を待つのがお決まりのパターンです。
3.2. 画像の情報を取得する
OpenCVで読み込んだ画像はNumPy配列なので、そのプロパティを簡単に確認できます。
print(f"画像の形状 (高さ, 幅, チャンネル数): {img.shape}")
print(f"データ型: {img.dtype}")
# 出力例:
# 画像の形状 (高さ, 幅, チャンネル数): (400, 600, 3)
# データ型: uint8
チャンネル数が`3`なのは、色がB(青)・G(緑)・R(赤)の3つの要素で表現されているためです。(**注意:** OpenCVでは一般的なRGBではなく、BGRの順番で色を扱うという少し変わった特徴があります。)
4. 画像の簡単クッキング:グレースケール変換とリサイズ
4.1. グレースケール(白黒)への変換
画像処理では、色の情報をなくし、明るさだけで画像を扱うグレースケール化が非常によく行われます。cv2.cvtColor()
関数で簡単に変換できます。
# 画像をグレースケールに変換
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Grayscale Image', gray_img)
4.2. 画像のリサイズ
画像のサイズを変更するにはcv2.resize()
関数を使います。
# 画像を幅300ピクセル、高さ200ピクセルにリサイズ
resized_img = cv2.resize(img, (300, 200))
cv2.imshow('Resized Image', resized_img)
4.3. 加工した画像の保存
加工した画像をファイルとして保存するにはcv2.imwrite()
関数を使います。
# グレースケール化した画像を別名で保存
save_path = 'grayscale_image.png'
cv2.imwrite(save_path, gray_img)
print(f"画像を '{save_path}' として保存しました。")
まとめと次回予告
今回は、コンピュータビジョンの世界への第一歩として、OpenCVを使った画像の基本的な操作を学びました。
- OpenCVをインストールし、
cv2
としてインポートする方法。 - 画像を読み込み(
imread
)、表示し(imshow
)、ウィンドウを維持・破棄する(waitKey
,destroyAllWindows
)一連の流れ。 - 画像がNumPy配列であり、その形状(
.shape
)などを確認できること。 - 画像をグレースケール化(
cvtColor
)したり、リサイズ(resize
)したり、保存(imwrite
)したりする基本的な加工方法。
これで、あなたはPythonを使って画像を自由に読み書きし、簡単な加工を施すための基本的なツールを手に入れました。
さて、画像という「素材」を扱えるようになったら、次はいよいよその中身を「分析」したくなりますよね。次回、第2回では、コンピュータビジョンの応用として最も有名でエキサイティングなテーマの一つ、写真の中から「顔」を自動で検出するプログラムの作成に挑戦します!お楽しみに!
コメント
コメントを投稿