Python OpenCVとは?画像処理・画像認識をPythonで実装する方法を初心者向けに解説
Pythonで画像処理や画像認識を始めたい人にとって、OpenCV(オープンシーブイ)は非常に重要なライブラリです。
画像の読み込み・保存、リサイズ、トリミング、色変換、二値化、エッジ検出、顔検出、動画処理など、さまざまな処理をPythonから簡単に実装できます。
本記事では、「Python OpenCV」をキーワードに、OpenCVの基本からインストール方法、画像処理のサンプルコード、AI・機械学習との組み合わせまで初心者向けにわかりやすく解説します。
Python OpenCVとは?
OpenCV(Open Source Computer Vision Library)は、画像処理やコンピュータビジョンのためのオープンソースライブラリです。
Pythonから利用できるため、Pythonプログラミングと組み合わせて、さまざまな画像処理を実装できます。
- 画像の読み込み
- 画像の保存
- 画像サイズの変更
- 画像の切り抜き
- 色の変換
- 二値化
- エッジ検出
- 図形検出
- 顔検出
- 動画処理
- カメラ映像の取得
Pythonでは一般的に「cv2」という名前でOpenCVを利用します。
import cv2
つまり、OpenCVをPythonで使う=「cv2」を使って画像や動画をプログラムから処理する
と考えると分かりやすいでしょう。
PythonでOpenCVを使うメリット
1. 画像処理を簡単に実装できる
例えば画像を読み込むだけなら、次のコードで実行できます。
import cv2
img = cv2.imread("sample.jpg")
画像処理の専門知識が少なくても、OpenCVに用意されている関数を利用することで、さまざまな処理を実装できます。
2. 無料で利用できる
OpenCVはオープンソースソフトウェアなので、基本的に無料で利用できます。
個人の学習だけでなく、研究や業務システムの開発などにも利用されています。
3. AIと組み合わせやすい
OpenCVは、機械学習やディープラーニングと組み合わせることも可能です。
カメラ
↓
OpenCV
↓
画像の前処理
↓
AIモデル
↓
画像認識
このような仕組みを作れるため、AIエンジニアを目指す人にとってもOpenCVは重要な技術の一つです。
PythonにOpenCVをインストールする方法
PythonからOpenCVを利用するには、まずライブラリをインストールします。
ターミナルで以下を実行します。
pip install opencv-python
環境によっては、以下のコマンドを使用します。
pip3 install opencv-python
インストール後、Pythonで以下を実行してみましょう。
import cv2
print(cv2.__version__)
バージョン番号が表示されれば、OpenCVのインストールは完了です。
Python OpenCVで画像を読み込む
OpenCVで画像を読み込むには、imread()を使用します。
import cv2
img = cv2.imread("sample.jpg")
これでsample.jpgを読み込めます。
読み込んだ画像を表示する場合は、imshow()を使用します。
import cv2
img = cv2.imread("sample.jpg")
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
imshow()で画像を表示し、waitKey()でキー入力を待ちます。
Python OpenCVで画像を保存する
画像を保存する場合は、imwrite()を使用します。
import cv2
img = cv2.imread("sample.jpg")
cv2.imwrite("output.jpg", img)
これで読み込んだ画像をoutput.jpgとして保存できます。
Python OpenCVで画像サイズを確認する
画像のサイズを確認するには、shapeを利用できます。
import cv2
img = cv2.imread("sample.jpg")
print(img.shape)
例えば、次のように表示されたとします。
(600, 800, 3)
この場合、以下の意味になります。
- 高さ:600ピクセル
- 幅:800ピクセル
- チャンネル数:3
OpenCVでは画像データをNumPy配列として扱うため、shapeを使って画像のサイズを確認できます。
Python OpenCVで画像をリサイズする
画像のサイズを変更するには、resize()を使います。
import cv2
img = cv2.imread("sample.jpg")
resized = cv2.resize(img, (400, 300))
cv2.imwrite("resized.jpg", resized)
この例では、画像を幅400px × 高さ300pxに変更しています。
画像認識では、AIモデルに入力する前に画像サイズを統一することがあるため、resize()は非常によく使われます。
Python OpenCVで画像を切り抜く
OpenCVでは、NumPyのスライスを利用して画像を切り抜くことができます。
import cv2
img = cv2.imread("sample.jpg")
crop = img[100:400, 200:500]
cv2.imwrite("crop.jpg", crop)
ポイントは、次の形式になっていることです。
img[y1:y2, x1:x2]
つまり、img[縦方向, 横方向]と覚えておくと分かりやすいでしょう。
Python OpenCVで画像をグレースケールに変換する
カラー画像を白黒画像に変換するには、cvtColor()を使用します。
import cv2
img = cv2.imread("sample.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray.jpg", gray)
OpenCVではカラー画像を扱う際にBGRの順番が基本となります。
そのため、cv2.COLOR_BGR2GRAYを使ってグレースケール画像に変換します。
Python OpenCVで画像を二値化する
画像を白と黒の2色に変換する処理を二値化といいます。
OpenCVでは、threshold()などを使用します。
import cv2
img = cv2.imread("sample.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(
gray,
127,
255,
cv2.THRESH_BINARY
)
cv2.imwrite("binary.jpg", binary)
二値化は、次のような用途で利用されます。
- OCR
- 書類解析
- 画像認識
- 物体検出
- 画像の前処理
Python OpenCVでエッジ検出する
画像の輪郭を検出する処理として、OpenCVではCanny法がよく利用されます。
import cv2
img = cv2.imread("sample.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
cv2.imwrite("edges.jpg", edges)
Canny()を使うことで、画像内の輪郭を検出できます。
写真
↓
グレースケール
↓
Canny
↓
輪郭を抽出
Python OpenCVで画像をぼかす
画像をぼかす処理には、GaussianBlur()などを利用できます。
import cv2
img = cv2.imread("sample.jpg")
blur = cv2.GaussianBlur(
img,
(15, 15),
0
)
cv2.imwrite("blur.jpg", blur)
画像のノイズを減らしたり、AIによる画像認識の前処理として利用したりできます。
Python OpenCVで画像を回転する
画像を回転する場合は、rotate()を使用できます。
import cv2
img = cv2.imread("sample.jpg")
rotated = cv2.rotate(
img,
cv2.ROTATE_90_CLOCKWISE
)
cv2.imwrite("rotated.jpg", rotated)
90度回転させるだけなら非常に簡単です。
Python OpenCVでカメラ映像を取得する
OpenCVを利用すると、PCのWebカメラから映像を取得することもできます。
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("camera", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
これによってカメラ映像をリアルタイムに取得できます。
OpenCVを使って、次のようなシステムを作ることもできます。
- 顔認識
- 姿勢推定
- ジェスチャー認識
- 防犯カメラ
- 人数カウント
Python OpenCVで動画を処理する
OpenCVは静止画だけでなく動画も処理できます。
動画ファイルを読み込む基本的なコードは次のとおりです。
import cv2
cap = cv2.VideoCapture("movie.mp4")
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("movie", frame)
if cv2.waitKey(30) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
動画を1フレームずつ読み込んで処理できることがポイントです。
Python OpenCVとNumPyの関係
OpenCVをPythonで使う場合、NumPyについても理解しておくと便利です。
OpenCVで読み込んだ画像は、基本的にNumPy配列として扱われます。
import cv2
img = cv2.imread("sample.jpg")
print(type(img))
画像データは配列として扱えるため、NumPyのスライスを利用して画像を切り抜くこともできます。
img[100:300, 200:400]
そのため、Python+OpenCV+NumPyは、画像処理を学ぶうえで非常に相性のよい組み合わせです。
Python OpenCVでできること
OpenCVを使うと、さまざまな画像処理システムを作れます。
| 分野 | OpenCVでできること |
|---|---|
| 画像処理 | リサイズ・回転・トリミング |
| 色処理 | グレースケール・HSV変換 |
| 画像加工 | ぼかし・シャープ化 |
| 二値化 | 白黒画像への変換 |
| エッジ検出 | 画像の輪郭抽出 |
| 動画処理 | 動画の読み込み・加工 |
| カメラ | Webカメラ映像の取得 |
| OCR | 文字認識の前処理 |
| 顔認識 | 顔領域の検出 |
| AI | AIモデルの前処理 |
| 検査 | 製品画像の異常検出 |
Python OpenCVとAIを組み合わせる
OpenCV単体でも高度な画像処理ができますが、AIと組み合わせることでさらに多くのことが可能になります。
例えば画像分類システムなら、次のような構成にできます。
画像
↓
OpenCV
↓
リサイズ・色変換
↓
AIモデル
↓
画像分類
また、カメラを使ったリアルタイム画像認識では、次のような構成が考えられます。
Webカメラ
↓
OpenCV
↓
フレーム取得
↓
画像前処理
↓
AIモデル
↓
物体検出
Python OpenCVでよく使う関数
OpenCVを学習するなら、まず以下の関数を覚えておくとよいでしょう。
| 関数 | 用途 |
|---|---|
cv2.imread() |
画像読み込み |
cv2.imwrite() |
画像保存 |
cv2.imshow() |
画像表示 |
cv2.resize() |
リサイズ |
cv2.cvtColor() |
色空間変換 |
cv2.threshold() |
二値化 |
cv2.Canny() |
エッジ検出 |
cv2.GaussianBlur() |
ぼかし |
cv2.rotate() |
回転 |
cv2.VideoCapture() |
カメラ・動画取得 |
cv2.waitKey() |
キー入力 |
cv2.destroyAllWindows() |
ウィンドウ終了 |
最初からすべて覚える必要はありません。
まずは、imread、imshow、resize、cvtColor、threshold、Canny、VideoCaptureあたりから始めるとよいでしょう。
Python OpenCVを学ぶために必要な知識
OpenCVを本格的に学ぶ場合、Pythonの基礎知識も必要になります。
特に重要なのが以下の知識です。
- 変数
- if文
- for文
- 関数
- リスト
- NumPy
- ファイル操作
また、画像処理を進める場合は、NumPyの配列操作を理解するとOpenCVのコードがかなり読みやすくなります。
Python OpenCVの学習におすすめの順番
Python初心者なら、次の順番で学習するのがおすすめです。
STEP1:Pythonの基礎
まずはPythonの以下の基本文法を学びます。
変数
↓
条件分岐
↓
繰り返し
↓
関数
↓
リスト
STEP2:NumPy
次にNumPyの配列について学びます。
import numpy as np
画像処理では配列操作を頻繁に利用するためです。
STEP3:OpenCVの基本
続いて、以下の処理を実践します。
画像の読み込み
↓
表示
↓
保存
↓
リサイズ
↓
トリミング
STEP4:画像処理
次に、以下の処理を学習します。
グレースケール
↓
二値化
↓
ぼかし
↓
エッジ検出
STEP5:カメラ・動画
画像処理に慣れたら、Webカメラや動画を扱います。
STEP6:AIとの連携
ここまでできれば、画像認識AIや物体検出などにも挑戦できます。
Python OpenCVで作れるもの
OpenCVを使えば、実際にアプリケーションを作ることもできます。
顔検出アプリ
カメラ映像から顔を検出するアプリです。
QRコード読み取り
カメラを使ってQRコードを読み取るシステムを作れます。
OCRシステム
画像から文字を読み取るOCRシステムの前処理にもOpenCVを利用できます。
画像加工ツール
画像の以下のような加工を行うツールも作れます。
- リサイズ
- 回転
- 白黒化
- ぼかし
AI画像認識システム
OpenCVで画像を取得・前処理し、AIモデルで画像認識を行うシステムも構築できます。
Python OpenCVに関するよくある質問
OpenCVは無料ですか?
はい。OpenCVはオープンソースのコンピュータビジョンライブラリで、無料で利用できます。
OpenCVはPython初心者でも使えますか?
使えます。
ただし、Pythonの基本文法とNumPyの配列について最低限理解しておくと、よりスムーズに学習できます。
OpenCVとPythonは何が違いますか?
Pythonはプログラミング言語です。
OpenCVは画像処理・コンピュータビジョンのためのライブラリです。
Python
↓
OpenCV
↓
画像・動画を処理
このような関係になります。
OpenCVだけでAI画像認識できますか?
OpenCVだけでも画像処理や一部の認識処理は可能ですが、最新のAI画像認識では、PyTorchなどの機械学習・ディープラーニングフレームワークと組み合わせるケースも多くあります。
OpenCVは、画像の取得や前処理などで活用できます。
まとめ:Python OpenCVは画像処理を学ぶための重要なライブラリ
PythonとOpenCVを組み合わせることで、プログラムから画像や動画を自由に処理できるようになります。
特に以下の分野を学びたい人にとって、OpenCVは非常に役立つライブラリです。
- 画像処理
- 画像認識
- OCR
- 顔検出
- 動画処理
- カメラアプリ
- AI画像認識
まずは以下のコマンドでOpenCVをインストールしてみましょう。
pip install opencv-python
そして、次のコードから始めてみます。
import cv2
img = cv2.imread("sample.jpg")
「画像を読み込む → 加工する → 保存する」という基本操作を繰り返すことで、Pythonによる画像処理の基礎が身につきます。
さらにNumPyやAI技術を組み合わせれば、実用的な画像認識システムの開発にもつながります。





