Pythonで「cv2(OpenCV)」を使おう|実例付きで解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年12月)

✔以下のような方が対象です

「pythonのcv2モジュールって何なの?」

「python cv2の使い方を理解したい」

「python cv2を利用したコード例が見てみたい」

✔当記事で伝えること

  • python cv2モジュールについての基本知識
  • python cv2の書き方とその応用例
  • python cv2を使用した実在するコード例

当記事ではpython cv2の初歩的な理解から、それを活用したコーディングまで、具体的なコード例を交えながら詳しく解説していきます。

ぜひ記事の最後までお読みいただき、python cv2の使い方について深い理解を得てください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Python CV2: 概要と特徴

こちらでは、PythonとCV2の組み合わせについて、その特徴と利点、主要機能をお伝えしていきます。

  • PythonとCV2の概要
  • CV2の利点
  • CV2の主要機能一覧

PythonとCV2の概要

Pythonは、そのシンプルな文法と高い可読性から初心者にも扱いやすいとされているプログラミング言語です。

またその汎用性から科学計算やウェブ開発、AI開発など幅広い分野で使われています。

そのPythonで画像処理をおこなうためのライブラリが、OpenCV(Open Source Computer Vision Library)のPythonバージョン、CV2です。

CV2の利点

CV2は、非常に強力な画像処理ライブラリで、以下のような処理が可能です。

  • 画像の読み込み、加工、表示など基本的な操作
  • 画像内の特定の形状や物体の検出などの高度な処理

また、その機能はリアルタイム処理にも対応しており、ウェブカメラの映像に対するリアルタイム処理などもおこなえます。

CV2の主要機能一覧

CV2の主要機能としては、以下のとおり。

  • 画像・動画の読み込み・表示・保存、画像内の特定物体の検出(顔認証、人体検出等)
  • 画像に対する描画(線、円、長方形、テキスト等)
  • 色空間の変換(RGB、HSV等)
  • 画像のフィルタリング(平滑化、エッジ抽出等)

PythonのためのCV2のインストールガイド

ここでは、PythonでCV2を使うために必要なインストール手順を見ていきましょう。

  • WindowsにおけるCV2のインストール
  • MacにおけるCV2のインストール
  • pipでのインストールのトラブルシュート
  • CV2のインストール確認方法

WindowsにおけるCV2のインストール

Pythonのインストールが完了したら、次にCV2(OpenCV)のインストールをおこないます。

Windowsの場合、コマンドプロンプトを開き、以下のコマンドを実行しましょう。

pip install opencv-python

このコマンドを実行すると、PythonにOpenCVがインストールされます。

MacにおけるCV2のインストール

Macの場合も同様に、ターミナルを開き、以下のコマンドを実行します。

pip install opencv-python

ここでも同じく、このコマンドによりPythonにOpenCVがインストールされます。

pipでのインストールのトラブルシュート

pip installがうまくいかない場合は、まずはpipのバージョンが最新であるか確認しましょう。

次に、PythonのバージョンがCV2と互換性のあるものであるか確認します。

それでもうまくいかない場合は、Pythonの環境(Anacondaなど)に問題がないか確認してみてください。

CV2のインストール確認方法

CV2のインストールが正常に行われたかどうかは、Pythonシェルを開いて以下のコマンドを実行することで確認できます。

import cv2
print(cv2.__version__)

エラーが出ずに、OpenCVのバージョンが表示されれば、インストールは正常に完了しています。

CV2での一般的な画像操作

PythonのOpenCV(CV2)を使用して画像ファイルを操作する基本的な手順を見ていきましょう。

まずは、画像の読み込みから始めます。

imread関数を用いて画像ファイルを読み込む例です。

import cv2

# 画像の読み込み
img = cv2.imread('image.jpg')

次に、読み込んだ画像を表示します。

  • imshow関数で画像をウィンドウに表示
  • waitKey関数でキーボード入力を待つ
  • destroyAllWindows関数で全てのウィンドウを閉じる
# 画像の表示
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

最後に、imwrite関数を使用して画像を保存します。

# 画像の保存
cv2.imwrite('output.jpg', img)

これらの操作をマスターすることで、画像処理の基本的な流れを理解することができます。

CV2の画像処理の基本

CV2の更なる機能を詳しく紹介します。

さまざまな操作ができるので、ひとつずつ手を動かしながら覚えましょう。

  • 画像内文字への描画
  • 画像トリミングとリサイズ
  • 色空間の調節
  • 画像ヒストグラムの作成

画像内文字への描画

画像に文字を描画するためには、putText関数を使用します。

以下は、画像の左上に”Hello, OpenCV”というテキストを描画する例です。

# 文字の描画
cv2.putText(img, 'Hello, OpenCV', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2, cv2.LINE_AA)

画像トリミングとリサイズ

画像の特定の領域をトリミングしたり、画像のサイズを変更するためには、resize関数とスライシングを使用します。

# 画像のトリミング
img_cropped = img[50:200, 150:300]

# 画像のリサイズ
img_resized = cv2.resize(img, (300, 200))

色空間の調節

画像の色空間を変更するにはcvtColor関数を使用します。

以下は、画像をグレースケールとHSV色空間に変換する例です。

# グレースケールへの変換
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# HSV色空間への変換
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

画像ヒストグラムの作成

画像のヒストグラムを作成するにはcalcHist関数を使いましょう。

ヒストグラムは、画像の輝度値の分布を示すグラフで、画像処理の際によく利用されるものです。

# ヒストグラムの作成
hist = cv2.calcHist([img], [0], None, [256], [0,256])

CV2での複雑な画像検出と処理

こちらでは、より複雑な画像検出と処理をOpenCVでおこなう方法について説明します。

具体的には、画像中の輪郭や円の検出、顔の検出について見ていきましょう。

  • 画像中輪郭と円の検出
  • 画像中顔の検出

画像中輪郭と円の検出

OpenCVは、画像の輪郭を見つけたり、特定の形を検出したりする強力な機能を持っています。

以下は、画像中の円を検出する例です。

# グレースケールに変換
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# ガウシアンブラーを使用してノイズを減らす
gray = cv2.GaussianBlur(gray, (15, 15), 0)

# Hough変換を使用して円を検出
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)

# 検出した円を描画
if circles is not None:
    circles = np.uint16(np.around(circles))
    for i in circles[0,:]:
        cv2.circle(img, (i[0], i[1]), i[2], (0,255,0), 2)

画像中顔の検出

顔の検出はOpenCVの最も一般的な応用例のひとつです。

以下の例では、顔検出器を作成し、画像内の顔を検出しています。

# 顔検出器の初期化
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# グレースケールに変換
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 顔を検出
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# 検出した顔を描画
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

PythonとOpenCV: サポート環境と使用方法

ここでは、OpenCVのサポート環境とPythonとOpenCVの使用方法について見ていきましょう。

OpenCVは多くのOSをサポートし、PythonはOpenCVの使用に非常に適しています。

  • OpenCVのサポートOS
  • OpenCVのPython対応

OpenCVのサポートOS

OpenCVは、その高度な機能と汎用性により、さまざまなOSでサポートされています。

Windows、Linux、Mac OS、さらにはAndroidやiOSを含む一部のモバイルOSもサポート。

このように幅広いサポート環境は、OpenCVが多種多様なプロジェクトとアプリケーションで利用されている理由のひとつです。

OpenCVのPython対応

OpenCVは、Pythonをはじめとする多くのプログラミング言語をサポートしています。

Pythonはそのシンプルさと高い可読性、そして広範なライブラリによって、画像処理や機械学習の分野で非常に人気です。

そのため、OpenCVとPythonの組み合わせは、これらの分野でのアプリケーション開発に非常に適しています。

まとめ

当記事では、OpenCVについて学習してきました。

OpenCVはその強力な機能と汎用性により、Pythonと組み合わせて使用すると画像処理や機械学習の領域で非常に強力なツールです。

  • OpenCVは基本的な画像操作から、フィルタリング、輪郭検出、顔認識まで、非常に多くの高度な機能を提供
  • OpenCVはPythonなどの多くのプログラミング言語をサポートし、広範囲のアプリケーションで利用可能
  • OpenCVの弱点としては、その学習曲線が比較的急である

PythonとCV2を使用することで、初心者でも比較的短期間で基本的な画像処理を習得できます。

その真の可能性を引き出すには継続的な学習と実践が必要です。

継続的な学習を通じて、より高度な画像処理技術を習得し、PythonとCV2の組み合わせで可能な応用範囲を広げらます。

また、具体的なプロジェクトを通じて実践的な経験を積むことで、理論だけでなく実際の問題解決能力も向上するでしょう。

タイトルとURLをコピーしました