【Python版OpenCV入門】使い方とサンプル集

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

【OpenCVとは】Pythonでの環境構築

OpenCV(Intel Open Source Computer Vision Library)とは、インテル社で開発された画像処理・画像認識用のオープンソースライブラリです。Python/C++/Java/Android/Node.jsなどで使用できます。
本ページでは、Python版OpenCVの使い方について紹介します。

Python版OpenCVの導入方法等についてはこちら
OpenCV環境構築 【Windows編】Python3にOpenCV3をインストール
補足① Winodws環境でPython+OpenCVの開発環境を整える場合、「WinPython」 + 「pipでOpenCVのインストール」を行う方法が一番簡単でおすすめです。
■Python環境構築:WinPythonでPython環境構築
■OpenCVの導入:pipでWinPythonにOpenCVをインストール
補足② 画像処理アルゴリズムの原理について学びたい方は下記ページをご覧ください。
【画像処理入門】アルゴリズム&プログラミング

動画解説版

本ページの内容はニコニコ動画、Youtubeでも解説しています。

ニコニコ動画版 Python版OpenCV超入門
Youtube版 Python版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 ニューラルネットワークONNX形式
特徴点 ■SIFT ■SURF ■位相限定相関法
その他 QRコード
機械学習 【機械学習入門】アルゴリズム&プログラミング

【動画像処理】

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

【その他】応用例、参考文献

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