最近、顔検出機能や物体検出機能がデジカメにとどまらず、スマートフォンのカメラにも搭載されるようになりました。カメラ単体だけではなく、自動運転技術を実用化するためにも画像認識技術の性能向上など様々な研究がされています。こういった時代背景の中、自分も画像処理に手を出してみたいという方も多いですよね。
しかし、本当に一から作ろうとすると膨大な知識と時間が必要になってしまいます。ですからIntelが開発したPythonで画像処理ができるライブラリ「OpenCV」を使うことで容易に画像認識に触れることができるのです。
そこで今日は、Pythonで画像処理ができるOpenCVを利用するメリットや、導入法についてお伝えしましょう。
pythonでの画像処理で「OpenCV」を利用する理由
まずOpenCVについてご説明します。
こういったライブラリを使用することで一から開発費を抑えられることから、企業でも採用されているのです。
それではOpenCVを利用する理由を挙げてみましょう。
- 開発費・時間を削減できる
- OpenCVは定期的に更新される
- オープンソースなので、誰でも使える
- OpenCV自体は早い処理速度を持っている
これで、Pythonで画像処理を行う理由はわかりましたよね。
それでは次の章で、実際にPythonによる画像処理を行うためにOpenCVをインストールする手順について解説します。
OpenCVをインストールしよう
では、実際に手を動かしてみましょう。OpenCVはオープンソースとお伝えしたように、無料でインストールすることが可能。ただしインストール方法はOSによって異なります。
Windowsの場合
コマンドライン(Anaconda Prompt)から、pipコマンドを利用して、OpenCVをインストールできます。
を入力することでインストールすることができます。
macOSの場合
macOSの場合では、Homebrewを利用してインストールするのが簡単です。
Homebrewは様々なライブラリを簡単なコマンド入力で直接インストールすることが可能ですが、Homebrewがインストールされていなければインストールする必要があります。今後も使用することが多いですので、これを機にインストールしてみてください。
Homebrewのインストールが完了したら、ターミナル.appに以下のコマンドを実行してください。大抵の場合はユーティリティフォルダの中にあります。
これでOpenCVのインストールが可能です。
python×OpenCVでできる基本的なこと
これでOpenCVのインストールはわかりましたよね。それではPythonでのOpenCVについて見ていきましょう。
Pythonでの画像処理でOpenCVを利用するには、先ほどお伝えした「一から開発する必要がない」点に加え、「汎用性が非常に高い」点が挙げられます。それは以下のような機能です。
画像の読み込みと表示
日頃扱っている画像データは、コンピュータからすれば数字の羅列にすぎません。その数値を読み込み、プログラム内で使用できるようにリスト化してくれる機能が、OpenCVには搭載されています。
物体検出
画像内にある人や動物、自動車といった物体を囲むバウンディングボックス(四角い領域)の場所を特定。また、物体検出をした領域に学習済みモデルを使用することでその物体が何かを判断します。これがOpenCVの代名詞でもある機能です。
テンプレートマッチング
物体の一部が写ったある画像を元に、画像全体でどこにその一部分が該当するかを認識します。細かな検出ができるようになります。
これら以外にもたくさんの機能がOpenCVには搭載されているので気になった方はぜひ、調べてみてください。
python×OpenCVで物体検出をしよう
それではOpenCVで物体検出をしてみましょう。
顔検出には、cv2.CascadeClassifier()を使います。ここで全て書くには量が膨大すぎるので、参照サイトを読んで少しずつ理解しながら手を動かしてください。
実際にPythonを用いて画像処理を行うには様々な手順が必要です。
参考サイト:【入門者向け解説】openCV顔検出の仕組と実践(detectMultiScale)
pythonで画像処理をする場合に気をつけた方がいいこと
ここまで、pythonとOpenCVについてお話しましたが、それでは今度はpythonで画像処理をする場合に気をつけるべきことについてお話しましょう。
まずはメリットについて。何より、Pythonはライブラリがとても充実していますよね。ですから、Pythonで画像処理を行うメリットは
コードが読みやすい
コンパイルが不要
ですがメリットばかりではありません。もちろんPythonにも弱点があります。
実行速度が遅い
バージョンが多い
そして、OpenCVにも弱点は存在します。
最新の機械学習は備えていない
アルゴリズムを改良できない
といった点がデメリットです。これらに気をつけて取り組んでください。ですが、これらのデメリットは個人で扱う場合にはそれほど影響はありません。バージョンの違いだけは気をつけておきましょう。
ここまで、OpenCVによるPythonを用いた画像処理の概要についてお伝えしました。
これらをまとめると
- OpenCVはPythonで画像処理ができるライブラリ
- OpenCVを使うことで容易に画像処理ができる
- ある程度のPythonの知識が必要になる
- OpenCVは汎用性があるが、拡張性がない
- Pythonのバージョンには気をつけよう
画像処理技術は自動運転や顔認証技術など、これからの社会に必要不可欠な要素です。これらが発展すると、高齢者や障害者はもちろん、安全な社会になるでしょう。
ですから今後も改良されていくことは容易に想定されます。興味を持った方は是非、実際に手を動かしてみてください。
簡単にはいかないかもしれませんが是非トライしてみましょう。