PythonによるOpenCV4 画像処理プログラミング + Webアプリ入門
著者 | 北山 直洋 |
---|---|
判型 | B5変型、440頁 |
ISBN | 978-4-87783-509-5 |
価格 | 本体4,000円 |
発行日 | 2021年11月10日(初版 第1刷発行) |
備考 | ダウンロードサービス:学習に使えるサンプルファイル 本文訂正(2021-10-26作成) |
本書について
本書では、単純な画像処理のプログラムの他に、OpenCVでの画像処理を1つの機能として実装したWebアプリケーションや、Deep Neural Networkを用いたオブジェクト認識を実行するプログラムなども開発します。WebアプリケーションやDeep NeuralNetworkの知識がなくても開発できるように解説をしていますが、それらの知識があればより理解が深まるでしょう。
本書は、OpenCVが用意しているPython用のライブラリを使用し、PythonからOpenCVを利用する方法を紹介します。Pythonについては、ある程度の知識があることを前提としています。もし、Pythonをまったく学習していない場合、先にPythonの入門書を読むことを勧めます。
目次
- 第1章 開発環境の準備
- 1.1 Anacondaのインストール
- 1.2 Spyder
- 1.3 OpenCVのインストール
- 1.4 Visual Studio Code
- 第2章 はじめてのOpenCVプログラム
- 2.1 OpenCV 3、OpenCV 4の特徴と変更点
- 2.2 NumPy
- 2.3 画像を生成するプログラム
- 2.4 画像の読み込み・保存を行うプログラム
- 第3章 GUI
- 3.1 トラックバーを使用した色空間の表示
- 3.2 トラックバーを使用した閾値処理
- 3.3 マウス操作によるペイント
- 第4章 ヒストグラム
- 4.1 グレースケール画像のヒストグラム
- 4.2 カラー画像のヒストグラム
- 4.3 マスクを適用したヒストグラム
- 4.4 ヒストグラム平坦化
- 4.5 適応型ヒストグラム平坦化
- 4.6 二次元ヒストグラム
- 4.7 動画を用いたヒストグラム表示
- 4.8 ヒストグラム逆投影法
- 4.9 GUIを用いたヒストグラム逆投影法
- 第5章 基礎的な画像処理
- 5.1 ハフ変換による直線検出
- 5.2 確率的ハフ変換
- 5.3 ハフ変換による円検出
- 5.4 画像ピラミッドを使用した画像のブレンディング
- 5.5 輪郭
- 5.6 モーメント、面積、周囲長
- 5.7 輪郭の近似
- 5.8 外接矩形
- 5.9 最小閉塞円
- 5.10 輪郭を用いたトリミング
- 5.11 透過画像
- 5.12 楕円と線のフィッティング
- 5.13 平均色、最大値、最小値
- 5.14 端点
- 5.15 凸性の欠陥
- 5.16 点と輪郭線の最短距離
- 5.17 輪郭の階層情報
- 第6章 画像解析
- 6.1 テンプレートマッチング
- 6.2 複数物体のテンプレートマッチング
- 6.3 オブジェクト除去
- 6.4 ダメージ補修
- 6.5 コーナー検出
- 6.6 特徴点検出
- 6.7 オブジェクトのマッチング
- 6.8 顔検出
- 6.9 オブジェクト検出
- 6.10 ハイダイナミックレンジ(HDR)
- 6.11 watershedアルゴリズムを使った画像の領域分割
- 6.12 GrabCutアルゴリズムを使用したインタラクティブな前景抽出
- 第7章 QRコード
- 7.1 QRコード生成
- 7.2 QRコード検出
- 第8章 動画処理
- 8.1 カメラのパラメータを表示
- 8.2 動画を表示
- 8.3 URLから動画を表示
- 8.4 動画の顔検出(Cascade)
- 8.5 動画の顔検出(Deep Learning)
- 8.6 meanshiftアルゴリズムを用いたオブジェクト追跡
- 8.7 Camshiftアルゴリズムを用いたオブジェクト追跡
- 8.8 オプティカルフロー
- 8.9 密なオプティカルフロー
- 8.10 背景差分
- 第9章 Webアプリ
- 9.1 Flask
- 9.2 起動環境の作成
- 9.3 設定ファイル
- 9.4 MTVフレームワーク
- 9.5 Templateの作成
- 9.6 Viewの作成
- 9.7 Modelの作成
- 9.8 デザインの実装
- 9.9 記事関連の各機能とログアウトの実装
- 9.10 画像処理機能の実装
- 9.11 ストリーミング機能
- 9.12 学習済みモデルを利用した画像のクラス分類
- 付録 Linux環境
- A.1 本書のプログラムをLinux環境で動作させる
- A.2 Linux系へのAnaconda、OpenCVのインストール
補足資料
2021-10-26: 本文訂正
p.vi 4行目
旧:Flask 2.0.1を使用しました。
新:Flask 1.1.2を使用しました。
p.334 下から1行目
旧:conda install flask
新:conda install flask==1.1.2
p.374 リスト9.32の12行目
旧:UPLOAD_FOLDER = r'C:\tmp'
新:UPLOAD_FOLDER = r'.\flask_opencv\static\images'
p.375 ①の段落
旧:①画像を保存するフォルダと保存できる画像の拡張子を指定します。ここでは、一例として画像を保存するフォルダを「C:\tmp」と定義しています。自身の環境に合わせて画像を保存したいフォルダを決めて、そのパスを記載してください。
新:①画像を保存するフォルダと保存できる画像の拡張子を指定します。ここでは、一例として画像を保存するフォルダを相対パスで「r'.\flask_opencv\static\images'」と定義しています。自身の環境に合わせて画像を保存したいフォルダを決めて、そのパスを記載してください。パスを変更する場合は、index.htmlなどのテンプレートのimgタグに指定しているパスも合わせて変更してください。
p.388 リスト9.41の2行目
旧:HAARCASCADE_FILE = r'C:\tmp\haarcascade_frontalface_alt.xml'
新:HAARCASCADE_FILE = r'.\flask_opencv\static\images\haarcascade_frontalface_alt.xml'
p.406 リスト9.48の13行目
旧:UPLOAD_FOLDER = r'C:\tmp'
新:UPLOAD_FOLDER = r'.\flask_opencv\static\images'
p.406 リスト9.48の22行目
旧:mapping_file_path = r'C:\tmp\index_to_name.json'
新:mapping_file_path = r'.\flask_opencv\static\predictions\index_to_name.json'