目次
- はじめに
- 本書の構成
- 本書で扱わないこと,参考文献
- API の解説
- サンプルコードとサポート
- 開発環境
第1章 OpenCVとは
- 1.1 OpenCVの概要
- 1.2 主要モジュール
- 1.3 OSSライセンス
- 1.3.1 OpenCVのOSSライセンス
- 1.3.2 opencv-pythonのOSSライセンス
- 1.4 サポート言語
- 1.4.1 公式サポート言語
- 1.4.2 非公式サポート言語
- 1.5 サポートプラットフォーム
- 1.6 高速化
- 1.6.1 スレッド並列化
- 1.6.2 SIMD命令対応
- 1.6.3 アクセラレータ対応
- 1.7 開発の歴史
- 1.8 ブランチ管理
- 1.8.1 2.4ブランチ
- 1.8.2 3.4ブランチ
- 1.8.3 4.xブランチ
- 1.8.4 5.xブランチ
- 1.8.5 masterブランチ
- 1.8.6 nextブランチ
- 1.9 各種サイト
- 1.9.1 公式サイト
- 1.9.2 公式リポジトリ
- 1.9.3 有志サイト
第2章 OpenCVインストール
- 2.1 OpenCVのインストール
- 2.2 pip
- 2.2.1 依存パッケージインストール
- 2.2.2 opencv-pythonインストール
- 2.2.3 opencv-contrib-pythonインストール
- 2.2.4 動作確認
- 2.2.5 opencv-pythonパッケージのバージョン番号
- 2.2.6 Windows環境固有の注意点
- 2.3 Miniconda
- 2.3.1 Minicondaインストール
- 2.3.2 依存パッケージインストール
- 2.3.3 opencvパッケージインストール
- 2.3.4 動作確認
- 2.4 Docker
- 2.4.1 Dockerインストール
- 2.4.2 Dockerイメージのビルド
- 2.4.3 Dockerコンテナの起動
- 2.4.4 動作確認
- 2.5 ソースコード
- 2.5.1 依存パッケージインストール
- 2.5.2 ビルド,インストール
- 2.5.3 動作確認
- 2.5.4 CMakeオプション
第3章 coreモジュール
- 3.1 基本処理
- 3.1.1 画像データの扱い
- 3.1.2 ブランク画像生成
- 3.1.3 画素値の参照,代入
- 3.1.4 width,height,チャンネル情報の取得
- 3.1.5 ROI操作
- 3.2 ピクセルごとの操作
- 3.2.1 add,subtract
- 3.2.2 bitwise_and,bitwise_or
- 3.2.3 addWeighted
- 3.2.4 absdiff
- 3.2.5 copyTo
- 3.2.6 flip
- 3.2.7 rotate
- 3.2.8 clip
- 3.3 統計情報の取得
- 3.3.1 min,max
- 3.3.2 minMaxLoc
- 3.3.3 mean
- 3.3.4 sum
- 3.3.5 countNonZero
- 3.4 画像の分割,結合
- 3.4.1 split,merge
- 3.4.2 hconcat,vconcat
- 3.5 ユーティリティ
- 3.5.1 getBuildInformation
- 3.5.2 TickMeter
- 3.5.3 FileStorage
- 3.5.4 useOptimized
- 3.5.5 setUseOptimized
第4章 imgprocモジュール
- 4.1 画像の前処理と後処理
- 4.1.1 OpenCVで利用できる手法
- 4.1.2 画像の出力方法
- 4.2 色の変換
- 4.2.1 色空間の変換(cvtColor
- 4.2.2 チャンネルで分割(split)
- 4.2.3 HSV色空間の活用
- 4.2.4 その他の色変換
- 4.3 適応的しきい値による2値化(adaptiveThreshold)
- 4.3.1 しきい値(threshold)
- 4.3.2 adaptiveThresholdによる2値化
- 4.3.3 輪郭の抽出(findContours)
- 4.4 画像の幾何変換
- 4.4.1 アフィン変換(warpAffine)
- 4.4.2 射影変換(ホモグラフィ変換)
第5章 imgcodecs,videoioモジュール
- 5.1 画像の読み込み
- 5.1.1 静止画を読み込む(imread)
- 5.1.2 動画の読み込み(VideoCapture)
- 5.1.3 ネットワークカメラからの読み込み
- 5.1.4 Webカメラからの読み込み
- 5.1.5 連番画像の読み込み
- 5.2 画像の書き込み
- 5.2.1 静止画の書き込み(imwrite)
- 5.2.2 動画の書き込み(VideoWriter)
第6章 ディープラーニング
- 6.1 ディープラーニングの概要
- 6.1.1 モデル,パラメータ,オプティマイザ
- 6.1.2 過小適合と過剰適合
- 6.1.3 ディープラーニングでの考え方
- 6.2 精度評価
- 6.2.1 回帰の精度評価
- 6.2.2 分類の精度評価
- 6.3 画像処理におけるディープラーニング
- 6.3.1 CNN
- 6.3.2 CNNの優位性
第7章 dnnモジュール基礎
- 7.1 dnnモジュールの概要
- 7.1.1 dnnモジュールとは?
- 7.1.2 サポートしているモデルフォーマット
- 7.1.3 推論エンジンと実行デバイス
- 7.1.4 High Level APIとLow Level API
- 7.2 顔検出
- 7.2.1 顔検出とは?
- 7.2.2 顔検出(OpenCV Face Detector)
- 7.2.3 NMS(Non-Maximum Suppression)
- 7.2.4 パフォーマンス比較
- 7.2.5 APIの仕様
- 7.3 オブジェクト検出
- 7.3.1 オブジェクト検出とは?
- 7.3.2 精度重視のオブジェクト検出(YOLOv4)
- 7.3.3 さらに精度の高いオブジェクト検出(Scaled-YOLOv4)
- 7.3.4 処理速度重視のオブジェクト検出(YOLOv4-tiny)
- 7.3.5 パフォーマンス比較
- 7.3.6 APIの仕様
- 7.4 クラス分類
- 7.4.1 クラス分類とは?
- 7.4.2 精度重視のクラス分類(EfficientNet)
- 7.4.3 信頼度上位5個のクラスを取得する
- 7.4.4 処理速度重視のクラス分類(MobileNet v3)
- 7.4.5 パフォーマンス比較
- 7.4.6 APIの仕様
- 7.5 セグメンテーション
- 7.5.1 セグメンテーションとは?
- 7.5.2 セグメンテーション(DeepLab v3)
- 7.5.3 APIの仕様
- 7.6 テキスト検出とテキスト認識
- 7.6.1 テキスト検出,テキスト認識とは?
- 7.6.2 テキスト検出(DB)
- 7.6.3 テキスト認識(CRNN-CTC,DenseNet-CTC)
- 7.6.4 パフォーマンス比較
- 7.6.5 APIの仕様
- 7.7 キーポイント検出
- 7.7.1 キーポイント検出とは?
- 7.7.2 キーポイント検出(Lightweight OpenPose)
- 7.7.3 キーポイントのもとになるヒートマップを取得する
- 7.7.4 APIの仕様
第8章 dnnモジュール応用
- 8.1 dnnモジュールの対応レイヤ
- 8.2 カスタムレイヤ対応
- 8.2.1 カスタムレイヤのクラスを実装する
- 8.2.2 カスタムレイヤを登録する
- 8.2.3 動作確認
- 8.3 学習済みモデルの診断ツール(model-diagnostics)
- 8.3.1 概要
- 8.3.2 環境構築
- 8.3.3 使い方
- 8.3.4 実行例
- 8.4 外部DNNフレームワーク連携
- 8.4.1 CUDA backend
- 8.4.2 Intel Inference Engine backend
- 8.4.3 Tengine backend
- 8.5 学習済みモデルの利用
- 8.5.1 OpenCV Zoo
- 8.5.2 Open Model Zoo
- 索引
- 著者プロフィール