OpenCV関連本いろいろ(洋書)
スポンサーリンク
本のタイトルから対象にしているOpenCVのバージョンが判断しづらいケースや、内容の違いがよくわからないものが多いのでリスト化してみました。
随時更新予定です。
確実に言えることは、Amazon から買うより出版元の割引セールで買うか、電子版なら定額読み放題サービスを利用するのがリーズナブルだということです。
特にPackt の本をAmazonのKindle版で購入しようとするとなぜか価格が高いケースが多いので出版元のサイトから購入することを強く推奨。
Pact の本は定額読み放題サービス(Mapt )のWeb版で確認した情報。
オライリー(英語版)の英文よりもPacktという出版社の英文の方が個人的に読みやすいです。
ごちゃごちゃと書いてある本は少なくとも半分以上目を通したか、サンプルコードの一部を入力して実行した*1書籍になります。逆言うとそれ以外は基本的に導入部分の説明(対象バージョンや前提条件)のみ確認しています。
なお、日本語の関連本についてもまとめ記事を作成しました。
C++
Packtの方は本文で例示しているソースコードとダウンロードしたソースが微妙に違うケースがあるので注意されたし。
基本的にバージョン3.xの本が出揃っているようなので2.x系を対象にした本は除きます。
Learning Opencv 3: Computer Vision in C++ With the Opencv Library
Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library
- 作者: Adrian Kaehler,Gary Bradski
- 出版社/メーカー: O'Reilly Media
- 発売日: 2017/01/08
- メディア: ペーパーバック
- この商品を含むブログを見る
米オライリーの方針変更でDRMフリーの電子版(epub, pdf, mobi)の単体購入はできなくなりました。定期購読か紙媒体、Kindle版のみ、です。
絶賛リリース遅延中?どうにか正式リリースされた安心安全のオライリー本。Amazonでは夏頃発売になってたんですよ、ホントに。
私の英語力ではちょっと読みにくい。そのうち翻訳本が出るはず。
日本語版が発売されています。
詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一,小沼千絵,永田雅人,花形理
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/05/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
この本に限らず、もう少しモダンな組版とかレイアウトになるといいのだけど。
サンプルコードはGitHub経由で。
GitHub - oreillymedia/Learning-OpenCV-3_examples
Learning OpenCV 3 Application Development
Learning OpenCV 3 Application Development
- 作者: Samyak Datta
- 出版社/メーカー: Packt Publishing
- 発売日: 2016/12/19
- メディア: Kindle版
- この商品を含むブログを見る
12月正式リリース予定。Mapt 経由では未だ読めず 。
- OpenCV 3.1
- 著者はカナダの大学教授
- 特筆すべき内容は顔認識とか静止画からの3次元再構築とか
OpenCV 3 Computer Vision Application Programming Cookbook - Third Edition
OpenCV 3 Computer Vision Application Programming Cookbook - Third Edition
- 作者: Robert Laganiere
- 出版社/メーカー: Packt Publishing
- 発売日: 2017/02/09
- メディア: Kindle版
- この商品を含むブログを見る
12月正式リリース予定。Mapt 経由では未だ読めず。
著者はGoogle でインターンしたことがあるとかなんとか。南インドのインド情報技術大学ハイデラバード校の研究者(research intern)。
OpenCV 3 Blueprints
- 紹介されている機材を持っていないとツラい(いわゆるデプスカメラとか)
- OpenCV の解説というよりは応用例の紹介
- 機械学習による表情(Facial Expressions)の判別(Chapter 3)
- パノラマ画像を合成するAndoroid アプリ(Chapter 4)
- 物体検出(Chapter 5)
- 生体認証(顔、指紋、虹彩)の実例(Chapter 6)
- ジャイロセンサ(スコープ)によるビデオ安定化(Gyroscopic Video Stabilization): 手ぶれ補正の話(Chapter 7)
体系的に解説しているタイプの本ではない。OpenCV経験者向けだと思う。
サンプルコード:GitHub - OpenCVBlueprints/OpenCVBlueprints: OpenCVBlueprints
Mastering OpenCV 3 - Second Edition
Mastering OpenCV 3 - Second Edition
- 作者: Daniel Lélis Baggio,Shervin Emami,David Millán Escrivá,Khvedchenia Ievgen,Naureen Mahmood,Jason Saragih,Roy Shilkrot
- 出版社/メーカー: Packt Publishing
- 発売日: 2017/05/04
- メディア: Kindle版
- この商品を含むブログを見る
Mastering OpenCV 3 - Second Edition | PACKT Books
OpenCV 3.1がターゲット。
特徴はChapter 3 のナンバープレート読み取り(英数字)。ラズパイを使ったサンプルもある。 あとは顔認識とか姿勢推定とか。
かなり応用重視の本。
OpenCV By Example
- 作者: Prateek Joshi,David Millan Escriva,Vinicius Godoy
- 出版社/メーカー: Packt Publishing
- 発売日: 2016/01/22
- メディア: Kindle版
- この商品を含むブログを見る
- OpenCV 3.0
- 比較的平易な英語
- CMake の初歩など
- 画像から単純なオブジェクトを検出(Chapter 5/6)
- 顔認識、顔の一部をトラッキング(Chapter 7)
- Tesseract OCR 連携(chapter 10)
人間の視覚の話から入る。最初だけの脳科学の用語とか出てくるので注意。Chapter 6 から機械学習の話が始まる。網羅的にOpenCVの機能を解説しているわけではない。
文中で度々OCRに言及している点も特徴のひとつ。「こういう処理はOCRでも有益だ」とか、「典型的な応用例としてはOCRが挙げられる」という文章が何度か出てくる。
気になった点など
ヘッダファイルの追加についてスルーしている箇所があったり、本文中で説明しているコードとダウンロードしたソースコードが微妙に一致していない箇所があるので注意*2。
また、OpenCVの関数のうち、引数に整数で範囲をしているするものについては「範囲にその値を含むか含まないか」を説明して欲しかった。上限値を指定する場合、255を引数とするのか、256(範囲に含まない)を引数として与えるのかは明記指定欲しい。プログラムのコメントに0から255と書いておきながら関数の引数が256とあれば誤植でないか、疑問に思って手が止まってしまう。上限値+1など書いてくれた方がいい。
下限値は範囲に含むが、上限値は範囲に含まないというのは個人的には違和感がある。Python とか Go でもそういうAPIの場合はあるから違和感がないのかもしれないが。
サンプルコードに関連して
基本的にダウンロードしたソースはちゃんとコンパイル通るのでそっちをメインに参照するといい。ただし、文中にファイル名は明示されていない(少なくともMapt経由で読む分には)。
ただし、Chapter 6のSVMを使ったサンプルについては本文が正しく、ダウンロードしたファイルの方がおかしい。
具体的にいうと、ソースコード側でml
モジュールの、SVM::Params
クラスのオブジェクトを使用しているせいでコンパイルが通らない。OpenCV のバージョン3.xにはこのサブクラスはない。
少なくとも3.0 Beta のある時期まではこのSVM::Params
が存在した模様。まともなOpenCV 3.x のSVMまわりは仕様が変更されたとのことなので、使い方としてはこのSVM::Params
を使うのは正しくない。
本文側は公式のチュートリアルと同様にSVM::create()
を使っている。なのでこの部分は本文側を信じてサンプルのコードを書き換える。
Python 系
Python 3.x なのか 2.x かそれが問題です。
Python 2.x が対象の書籍でもprint
関数など一部を修正すれば大丈夫だろうと思うが、OpenCV以外に利用されているライブラリまでは判断できない。
ググればサンプルが出てくるので本を買う必要はないのかもしれない。
参考書もPython 3系に移行してくれないと、せっかくPython 3系を勉強した初学者が本格的にPythonを利用する際にやっぱり2系の知識も…という話になってしまう。
OpenCV with Python by Example
OpenCV with Python BluePrints
- 作者: Michael Beyeler
- 出版社/メーカー: Packt Publishing
- 発売日: 2015/10/19
- メディア: ペーパーバック
- この商品を含むブログを見る
Learning OpenCV 3 Computer Vision with Python - Second Edition
Learning Opencv 3 Computer Vision With Python
- 作者: Joe Minichino
- 出版社/メーカー: Packt Publishing
- 発売日: 2015/09/29
- メディア: ペーパーバック
- この商品を含むブログを見る
OpenCV: Computer Vision Projects with Python
Mac環境の場合は、MacPorts、Homebrew 両方とも解説あり。
extra
モジュールを有効にしていればOpenCV 3.x でも問題はなさそうに見える。
Raspberry Pi for Python Programmers cookbook Second Edition
Raspberry Pi for Python Programmers Cookbook, Second Edition
- 作者: Tim Cox
- 出版社/メーカー: Packt Publishing
- 発売日: 2016/10/07
- メディア: ペーパーバック
- この商品を含むブログを見る
ちょこっとだけOpenCVが出てくる。旧版と間違えないよう注意。
- Python 3.4
- OpenCV 3.0
- Raspberry Pi 3 model B を推奨しているが、他のモデルでもOK
- Pi Camera module or Webカメラ
改訂版のはずだが現行のRaspbian に存在しないはずのmencoder を使う例がある。mpv
で代用できると思う。
ネットワーク接続を含めて環境構築周りが詳しい。ソースからOpenCV 3.0 + contlib でビルドして
Chapter 2 からPythonプログラミング。最初は換字式暗号(シーザー暗号)のプログラムからスタート。Python/Tk のGUIプログラミングとかゲーム作成の初歩とか。OpenCV はChapter 8の後半のみ。
Computer Vision with Python 3
- 作者: Saurabh Kapur
- 出版社/メーカー: Packt Publishing
- 発売日: 2017/08/24
- メディア: ペーパーバック
- この商品を含むブログを見る
Computer Vision with Python 3 | PACKT Books
OpenCV オンリーではないけど一応。Pillow, Scikit-Image, and OpenCVの3つを解説している。バランスは良さそう。
トータル206ページなのでそれほど読むのもしんどくないはず。
for iOS
IOS Application Development with Opencv 3
- 作者: Joseph Howse
- 出版社/メーカー: Packt Publishing
- 発売日: 2016/06/30
- メディア: ペーパーバック
- この商品を含むブログを見る
- Objective-C
- OpenCV 3.1
- iOS 9
- 画像の合成
- 顔認識、顔画像合成
- コインの判別など
GitHubでもソースコードが公開されている。出版社のページから入手できるソースより更新されている場合がある。 また、正誤訂正(ERRATA)もGitHubで。
- GitHub - JoeHowse/iOSWithOpenCV: These are the projects for my book, iOS Application Development with OpenCV 3.
- iOSWithOpenCV/ERRATA.md at master · JoeHowse/iOSWithOpenCV · GitHub
iOS 9 を前提にしているので、微妙に'deprected'で警告が出たりするが、適宜修正すればいい。GitHubで公開されている方のコードはiOS 10対応になっている。
Mapt経由で読んでいるせいなのか、本文中のソースコードのインデント(というかメソッド定義の先頭)がおかしい箇所がある(Chapter 2)。
OpenCV 3.1系の、特にCvVideoCamera
クラスのバグ対策のノウハウが色々と記載されている。ただし、OpenCV 3.2系でどこまで修正されているのかは未確認。
Objective-Cでのアプリ開発の経験があるならなかなか良い本。難点を挙げるとすればアルゴリズムの説明がちょっと雑。例えば画像合成の説明で複数の合成アルゴリズムを使用するのはいいのだけれど、アルゴリズムAの前処理、アルゴリズムBの前処理、…と続いてアルゴリズムAの処理、アルゴリズムBの処理、と続くのはかえって混乱する。
少なくとも現在のSwiftから直接C/C++のライブラリを使用することはできない。そのためこの本はObjective-C/C++でアプリを開発するサンプルになっている。 OpenCVに関係ない部分はSwiftで、残りはObjective-CでC++をラップすれば問題ないはずだがやはり混在させると面倒なのだろうと思った。
そのほか
日本語のOpenCV解説ページなど。
結論
身もふたもないが、定額読み放題サービス(Safari Books Online or Mapt )に加入すれば悩む必要なし。ざっくり1冊読んでおいて、あとは必要に迫られた時に参考になりそうなトピックが書いてあるものを読めばいいのではないでしょうか。
個人的なおすすめはOpenCV Exampleです。
OpenCV 3.x + Python 3.x はGoogle 先生がサンプルのありかを教えてくれます。関数の名称は変化していないのできっとなんとかなる。
……以上です。