[Python] OpenCVについて解説 出来る事一覧紹介
OpenCVとは何かを解説
この記事ではOpenCVについて紹介していこうと思います。この記事はOpenCVの触りの部分のみ記載してあります。興味が湧いたら是非他の記事も読んで頂けると幸いです。
OpenCVはOpen Source Computer Vision Library(OpenCV)の略称になります。OpenCVは画像処理を行う膨大な関数を用意したライブラリです。また,画像処理のライブラリ以外にも機械学習(SVMやランダムフォレストなど)のライブラリもサポートしています。
画像処理では一般的な二次元の画像処理,ヒストグラム処理,ポリゴン処理,テンプレートマッチングなど数多くのライブラリを用意しており,様々なアプリケーション開発に使用できます。
このOpenCVを使用する事で短いコードで簡単な画像処理プログラムを開発できます。
OpenCVで実施可能な機能を解説
OpenCVを使う事で本当に多くの機能を実装する事ができます。
非常に便利でかつ無償なので素晴らしいライブラリ群ですよね。OpenCVでは以下のリストにある機能を実装できます。
- フィルタ処理
- 行列演算処理
- オブジェクト追跡処理
- 領域分割処理
- カメラキャリブレーション処理
- 特徴点抽出処理
- 物体認識処理
- 機械学習処理
- パノラマ合成処理
- コンピュテーショナルフォトグラフィ処理
- 動画処理
ぱっと書くだけでもこれだけの事ができます。当然これだけの機能をマスターするのはそれなりに大変だとは思いますが今後画像処理の需要はどんどん高まっていきますので努力する価値は十分にあります。
以下に画像処理システムの世界市場の成長率を示しておきます。
世界的な画像処理システムの世界需要は右肩上がりです。私は製造業に所属し,生産技術関連の業務を行っていますが画像処理の需要は音を立てて上がっているのを感じます。
今後画像処理を勉強しようと思っている方は非常にラッキーです。何故ならこんなにも明確な成長市場に入れば多くのビジネスチャンスに恵まれる事請け合いですからね。
OpenCVのバージョンと利用可能なプログラミング言語
OpenCVにはいくつかのバージョンがありますが,大きく分けると2つのバージョンに分かれる事になります。
1つ目のバージョンはOpenCV3です。
恐らく皆さんが見た事のある既存アプリの多くはOpenCV3で作られているのではないでしょうか。
OpenCV3は以下の言語で活用する事ができます。
- C++
- Python
- Java
- C
この4つの言語で使用する事ができます。ただ,実際にはC#などでも有志の方がライブラリを作ってくれているのでC#でも使用する事はできます。ただOpenCVの公式ではOpenCV3では上記4種類でしか使用できません。
2つ目のバージョンはOpenCV4です。
この記事の執筆時点(2020年10月)での最新版はこのOpenCV4です。
OpenCV4ではOpenCV3に比べて使用できる言語が若干変わっています。使用できる言語一覧が以下です。
- C++
- Python
- Java
OpenCV3からCのライブラリが消えました。まぁ私はプログラミングを組むような業務を行っていますが,最近Cでアプリや組み込み機器を開発したなんていう話は聞かないので恐らく大きな障害にはならないでしょう。開発コスト削減が目的だと思います。
OpenCVでサポートしている画像フォーマットを紹介
OpenCVはバージョン3でも4でも同じ画像フォーマットをサポートしています。
ちなみに上記の画像はLennaというセクシー女優で,画像処理において1番有名な画像です。やはり画像処理をしている人も参考にする画像は美人な方が良かったのでしょう。しかし,同じ美人の画像でも表現する拡張子は色々とあります。今回上記の画像はJPEGフォーマットのようです。
この画像フォーマットは拡張子によって判別でき,画像の保存方式が拡張子によって大きく変わります。そのためOpenCVで処理できる画像のフォーマット一覧を以下に記載します。
フォーマット名称 | 拡張子 |
Windows bitmap | .bmp .dib |
JPEG | .jpeg .jpg .jpe |
JPEG 2000 | .jp2 |
Portable Network Graphics | .png |
WebP | .webp |
Portable image | .pbm .pgm .ppm .pxm .pnm |
Sun rasters | .sr .ras |
TIFF | .tiff .tif |
OpenEXR Image | .exr |
Radiance HDR | .hdr .pic |
本当に多くの画像フォーマットをサポートしていますね。開発者の皆様には頭が下がります。
ちなみに私が所属するような製造業では大体JPEGかBMP,PNGのどれかを使用すると思いますので安心してOpenCVでアプリ開発を行えます。
今回のOpenCVの解説はあくまで基本の部分のみです。他の記事でOpenCVを使って何が出来るのか,またその際のコーディング方法などを紹介しますので是非そちらも参考にして頂ければ幸いです。
是非このOpenCVを使って製造業の生産性改善などを行って日本経済活性化を行って頂ければと思います。