OpenCV3-Pythonチュートリアルとは¶
OpenCV¶
OpenCVはIntel社で1999年に Gary Bradsky によって開発が開始され,2000年に最初にリリースされた. Vadim Pisarevsky がIntel社のロシアソフトウェアOpenCVチームの管理をするためにGary Bradskyの仲間になった.2005年にOpenCVは2005年DARPA Grand Challengeにて勝利したStanleyという車で使用された.その後,Willow Garageのサポートの下Gary BradskyとVadimPisarevskyに率いられ開発が続けられた.現在ではOpenCVはComputer Visionと機械学習に関する大量のアルゴリズムをサポートしており,日に日に進歩している.
現在OpenCVはC++, Python, Javaといった様々なプログラミング言語をサポートし,Windows, Linux, OS X, Android, iOSといった異なるプラットフォーム上で使用可能である.また,高速なGPU計算を可能とするためにCUDAとOpenCVを基にしたインタフェースも開発されている.
OpenCV-PythonはOpenCVのPythonのAPIである.OpenCVのC++ APIの最高品質とPython言語を組み合わせたものである.
OpenCV-Python¶
Pythonは Guido van Rossum によって開発が始められた汎用プログラミング言語であり,その簡易性とコードの可読性によって短時間の間にとても人気がある言語となった.可読性を失うことなく少ない行数のコードでアイディアを実現することが可能である.
C/C++といった他の言語と比較すれば,Pythonは低速である.しかしPythonのもう一つの重要な特徴はC/C++と共に簡単に拡張できる点が挙げられる.この特徴はC/C++で計算量の多いコードを書きPythonのラッパーを作成する手助けになり,これによってラッパーをPythonのモジュールとして使うことができる.この特徴は二つの利点を与えてくれる: まず初めに元のC/C++のコードと同程度の速度で実行でき(バックグラウンドでは本当のC++のコードが走るからである),第二にPythonで実装するのがとても簡単だからである.これがOpenCV-Pythonが動作する理由であり,元のC++の実装についてのPythonラッパーということである.
さらに,Numpyのサポートによってタスクがさらに簡単になる. Numpy は数値計算のために高度に最適化されたライブラリで,MatLab形式のシンタックスを提供する.OpenCVの全array構造とNumpyのarrayは互いに変換可能である.つまり,どのような処理であれNumpyを使って計算でき,OpenCVと組み合わせることができる.これに加えて,SciPy, Matplotlibといったその他のライブラリがNumpyの使用のサポートをする.
よって,OpenCV-PythonはComputer Visionの問題のプロトタイプを早く実装するための適切なツールと言える.
OpenCV-Pythonチュートリアル¶
- OpenCVはOpenCV-Pythonで使用可能な様々な関数の説明をする新しいチュートリアルのセットを紹介する.
- このガイドはOpenCVのバージョン3.xを主に対象としている (大半のチュートリアルはOpenCV 2.xでも同様に動作する).
本チュートリアルはPythonとNumpyに関する知識を持っていることを前提としているため,それらについては扱わない. 特に,OpenCV-Pythonで最適化されたコードを書くために,Numpyに関する知識は必須である.
このチュートリアルは Abid Rahman K. が2013年のGoogle Summer of Codeの一部として Alexander Mordvintsev の下スタートした.
OpenCVはあなたを必要としている !!!¶
OpenCVはオープンソースであるため,OpenCVに対する貢献をしてくれる方を歓迎する.それは,このチュートリアルに関しても同様である.
もしこのチュートリアル内に間違いがあれば,例えどんな些細なスペルミスであっても,コードや概念などの大きなミスであっても気兼ねなく修正しよう.
これはオープンソースプロジェクトに対する貢献を始めたばかりの人にとって良いタスクになるだろう.githubからOpenCVをforkし,必要な修正を行い,OpenCVに対してプルリクエストを送るだけでいいのである.OpenCVの開発者はあなたのプルリクエストを確認しあなたに対して重要なフィードバックを送る.プルリクエストの確認者から許可が得られれば,あなたのプルリクエストがOpenCVに統合される.このようにしてあなたはオープンソースプロジェクトの貢献者になるのである.その他のチュートリアルやドキュメント等についても同様である.
OpenCV-Pythonに新しいモジュールが追加される度にこのチュートリアルは拡張されるべきである.特定のアルゴリズムに関して詳しい人がそのアルゴリズムの基礎理論やそのアルゴリズムの基本的な使い方を教えてくれるコードを含むチュートリアルをOpenCVに投稿できるのである.
我々が 一緒になって このプロジェクトを成功に導けることを覚えておいてください.
貢献者¶
OpenCV-Pythonに対してチュートリアルを投稿してくれた貢献者のリストを以下に示す.
- Alexander Mordvintsev (GSoC-2013 mentor)
- Abid Rahman K. (GSoC-2013 intern)
補足資料¶
- A Quick guide to Python - A Byte of Python
- Basic Numpy Tutorials
- Numpy Examples List
- OpenCV Documentation
- OpenCV Forum