Python版OpenCV入門 サンプル集

Python+OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きでまとめました。

Pythonとは

Pythonは欧米で人気なスクリプト言語です。
初心者にも扱いやすい言語で短くて読みやすいコードを書くことが出来ます。
数値計算や最近流行りの機械学習、画像処理にも強いという特徴があります。
本ページでは、PythonとOpenCVを用いた画像処理プログラミングについてまとめました。

※「Pythonの基礎」や「画像処理の基礎」については下記事で解説しています。

関連ページ
画像処理の原理はこちら 【画像処理入門】アルゴリズム&プログラミング
Pythonの基礎はこちら Python入門 サンプル集

Python・OpenCVの環境構築

PythonとOpenCVの環境構築について以下にまとめています。

項目
Python環境構築 Windows環境・・・Python環境を構築する方法
②Linux環境(Ubuntu, Rasbian)・・・標準搭載されているので環境構築不要
③Mac環境・・・(´∀`) <・・・
OpenCV環境構築 【Windows編】Python3にOpenCV3をインストール

補足

Python版OpenCVを使えるようにするには、「Python環境の構築」「OpenCVの導入」の2つを行う必要があります。
やり方がいくつもありますが、WIndows環境では次のやり方がおすすめです。

詳細記事
手順①Python環境の構築 WinPythonでPython環境構築
手順②OpenCVの導入 pipでWinPythonにOpenCVをインストール

ファイル入出力、色空間の変換、ヒストグラム・濃度変換

Python版OpenCVでは読み込んだ画像データはNumPy配列(ndarray)に格納されます。
そのため、ある程度NumPy配列の操作方法を知っておく必要があります。(全然難しくありません)
詳細は「【NumPy入門】基礎的な扱い方」をご覧ください。

ファイル入出力
画像データの読み込み 画像ファイルの読込画像ファイルの書込
各種情報の取得 幅・高さ・ch数・画素数の取得
画像の切り出し 窓画像(部分画像)
画質 圧縮 ■復元
色空間の変換
変換 RGB→GRAYRGB→HSV
ヒストグラム・濃度変換
基礎 ヒストグラム作成
変換 線形濃度変換非線形濃度変換(ガンマ補正)ヒストグラム平均化
減色 K平均法

空間フィルタリング、周波数フィルタリング

空間フィルタリング
平滑化 平均値ガウシアンメディアン
輪郭検出 一次微分PrewittSobelLaplacianEmboss ■LoG ■Canny
処理の高速化 積分画像DoGDoM ■XDoG
参考 【Numba】NumPy + for文の高速化
周波数フィルタリング
概要 画像処理におけるフーリエ変換
フーリエ変換 一次元FFT二次元FFTスペクトル強度
フィルタリング ローパスフィルタハイパスフィルタ

二値画像・幾何学的変換

二値画像処理
二値化処理 単純二値化適応的二値化大津の二値化
膨張収縮 膨張収縮処理
直線検出 ■ハフ変換(古典的) ■ハフ変換(確率的)
ブロブ解析 ブロブ情報解析面積最大のブロブ解析 ■ラべリング ■重心
幾何学的変換(画像の拡大・縮小・移動・回転など)
補間法 最近傍補間法バイリニア補間法バイキュービック補間法
回転 アフィン変換
その他 ■ユークリッド変換 ■相似変換

パターン認識(類似度評価・識別器・分類器・機械学習)

項目
テンプレート探索 SSDSADNCCZNCC
HL Cascade 顔検出
LBP Cascade アニメ顔検出
HoG SVM 人検出識別器の作成
NN ニューラルネットワーク
特徴点 ■SIFT ■SURF ■位相限定相関法
機械学習 【機械学習入門】アルゴリズム&プログラミング

動画像処理

項目
動画の取得 動画ファイルの読み込み・再生
動体検出 背景差分法フレーム差分法カラートラッキング
動体追跡 ■MeanShift ■Camshift ■オプティカルフロー(LK法)パーティクルフィルタ

応用例・その他

応用例
画像処理 漫画化アニメ絵化顔にモザイク
動画処理 漫画化アニメ絵化
監視カメラ フレーム差分で不審者の検知
物理実験 振り子の観測
その他
関連記事 【Python】画像処理プログラミング入門【画像処理入門】アルゴリズム&プログラミング
お借りした画像 プログラミング生放送(プロ生ちゃん)
便利ツール Python Cloud IDEOnline OpenCV IDE
関連記事