
画像認識やAIカメラ、動画編集など、コンピュータービジョンの世界に興味を持ったことはありませんか?Pythonには、画像や動画を直感的に扱うための強力なライブラリ「OpenCV」が用意されています。今回は、そのPython向けパッケージである opencv-python の基礎知識や魅力、そしてすぐに動かせる実践的なサンプルコードを丁寧に解説します。
OpenCV(opencv-python)の概要
OpenCV(Open Source Computer Vision Library)は、リアルタイムな画像処理やコンピュータービジョン向けに開発されたオープンソースライブラリです。元々はC++で開発されていますが、opencv-python を導入することで、Pythonから手軽にその高速な処理能力を利用できます。
静止画のリサイズや色調変換、輪郭抽出はもちろん、Webカメラを用いたリアルタイムの物体検出や顔追跡まで、視覚情報に関わるあらゆるタスクをカバーしています。画像データをNumPyの配列(ndarray)として扱うため、他のデータサイエンス系ライブラリとの連携も非常にスムーズです。
Webカメラからの映像をリアルタイムで取得して画面に表示するのも、OpenCVならわずか数行で実装できるんですよ。
opencv-pythonを使うメリット
- 圧倒的な処理速度
内部がC/C++で最適化されているため、高解像度の画像やフレーム数の多い動画でも高速に処理できます。 - 豊富な画像処理・解析アルゴリズム
ぼかし、エッジ検出、射影変換といった基本操作から、機械学習を用いた顔認識・特徴点マッチングまで、多彩な関数が標準で用意されています。 - NumPyとの高い親和性
読み込んだ画像データは標準的なNumPy配列として保持されます。スライス処理によるトリミングや、配列演算によるピクセル値の操作が直感的に行えます。
サンプルコード:画像の読み込みと加工
まずはライブラリをインストールしましょう。
pip install opencv-python以下のスクリプトは、画像の読み込み、グレースケール変換、リサイズを行い、輪郭を検出して保存する基本的な例です。
import cv2
# 1. 画像の読み込み(カラー画像として読み込み)
input_path = "input.jpg"
image = cv2.imread(input_path)
if image is None:
print("画像の読み込みに失敗しました。パスを確認してください。")
exit()
# 2. グレースケールへ変換
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 3. 画像のリサイズ(幅と高さを半分に縮小)
height, width = gray_image.shape
resized_image = cv2.resize(gray_image, (width // 2, height // 2))
# 4. Canny法によるエッジ検出
edges = cv2.Canny(resized_image, threshold1=100, threshold2=200)
# 5. 処理結果を保存
output_path = "output_edges.jpg"
cv2.imwrite(output_path, edges)
print(f"処理が完了しました。保存先: {output_path}")cv2.imread() は指定したパスが存在しない場合でもエラーを投げず、単に None を返します。読み込み後のチェックを忘れずに入れておくと安全です。


みーちゃんのワンポイント
OpenCVで最も見落としがちな罠は、「色の並び順がRGBではなくBGRである」という点です。
Matplotlibなどの外部ライブラリで画像を表示しようとすると色味が不自然になってしまうため、必要に応じて cv2.cvtColor(image, cv2.COLOR_BGR2RGB) で変換する癖をつけておきましょう!
