テクノロジー

【初心者向け】pythonとライブラリOpenCVではじめる画像処理入門

画像認識のイメージ

最近、顔検出機能や物体検出機能がデジカメにとどまらず、スマートフォンのカメラにも搭載されるようになりました。カメラ単体だけではなく、自動運転技術を実用化するためにも画像認識技術の性能向上など様々な研究がされています。こういった時代背景の中、自分も画像処理に手を出してみたいという方も多いですよね。

しかし、本当に一から作ろうとすると膨大な知識と時間が必要になってしまいます。ですからIntelが開発したPythonで画像処理ができるライブラリ「OpenCV」を使うことで容易に画像認識に触れることができるのです。

そこで今日は、Pythonで画像処理ができるOpenCVを利用するメリットや、導入法についてお伝えしましょう。

pythonでの画像処理で「OpenCV」を利用する理由

画像処理のイメージ

まずOpenCVについてご説明します。

OpenCVとは、画像処理や画像解析、機械学習などの機能をもつライブラリ。オープンソースですので、基本的な機能は無料で使用することができます。PythonやC++用に公開されており、Intelが開発・公開しています。

こういったライブラリを使用することで一から開発費を抑えられることから、企業でも採用されているのです。

それではOpenCVを利用する理由を挙げてみましょう。

  • 開発費・時間を削減できる
  • OpenCVは定期的に更新される
  • オープンソースなので、誰でも使える
  • OpenCV自体は早い処理速度を持っている

これで、Pythonで画像処理を行う理由はわかりましたよね。

それでは次の章で、実際にPythonによる画像処理を行うためにOpenCVをインストールする手順について解説します。

OpenCVをインストールしよう

インストールのイメージ

では、実際に手を動かしてみましょう。OpenCVはオープンソースとお伝えしたように、無料でインストールすることが可能。ただしインストール方法はOSによって異なります。

Windowsの場合

コマンドライン(Anaconda Prompt)から、pipコマンドを利用して、OpenCVをインストールできます。

pip install opencv-python

を入力することでインストールすることができます。

macOSの場合

macOSの場合では、Homebrewを利用してインストールするのが簡単です。

Homebrewは様々なライブラリを簡単なコマンド入力で直接インストールすることが可能ですが、Homebrewがインストールされていなければインストールする必要があります。今後も使用することが多いですので、これを機にインストールしてみてください。

Homebrew

Homebrewのインストールが完了したら、ターミナル.appに以下のコマンドを実行してください。大抵の場合はユーティリティフォルダの中にあります。

brew install opencv

これでOpenCVのインストールが可能です。

python×OpenCVでできる基本的なこと

文字の検出のイメージ

これでOpenCVのインストールはわかりましたよね。それではPythonでのOpenCVについて見ていきましょう。

Pythonでの画像処理でOpenCVを利用するには、先ほどお伝えした「一から開発する必要がない」点に加え、「汎用性が非常に高い」点が挙げられます。それは以下のような機能です。

画像の読み込みと表示

日頃扱っている画像データは、コンピュータからすれば数字の羅列にすぎません。その数値を読み込み、プログラム内で使用できるようにリスト化してくれる機能が、OpenCVには搭載されています。

物体検出

画像内にある人や動物、自動車といった物体を囲むバウンディングボックス(四角い領域)の場所を特定。また、物体検出をした領域に学習済みモデルを使用することでその物体が何かを判断します。これがOpenCVの代名詞でもある機能です。

テンプレートマッチング

物体の一部が写ったある画像を元に、画像全体でどこにその一部分が該当するかを認識します。細かな検出ができるようになります。

これら以外にもたくさんの機能がOpenCVには搭載されているので気になった方はぜひ、調べてみてください。

python×OpenCVで物体検出をしよう

顔認識のイメージ

それではOpenCVで物体検出をしてみましょう。

顔検出には、cv2.CascadeClassifier()を使います。ここで全て書くには量が膨大すぎるので、参照サイトを読んで少しずつ理解しながら手を動かしてください。

実際にPythonを用いて画像処理を行うには様々な手順が必要です。

物体検出をしたい画像をどのディレクトリに保存するか。読み込みにはどのパスを指定するのか。そういった基本知識がある前提で話が進められます。ある程度PythonやJavaでプログラミングの経験があれば良いでしょう。
まだ、Pythonに触ったことがない方は一から全ての構文を学習しようとするのではなく、使用ファイルと入出力ディレクトリの指定などが行えれば十分です

参考サイト:【入門者向け解説】openCV顔検出の仕組と実践(detectMultiScale)

pythonで画像処理をする場合に気をつけた方がいいこと

画像処理のイメージ

ここまで、pythonとOpenCVについてお話しましたが、それでは今度はpythonで画像処理をする場合に気をつけるべきことについてお話しましょう。

まずはメリットについて。何より、Pythonはライブラリがとても充実していますよね。ですから、Pythonで画像処理を行うメリットは

コードが読みやすい

Pythonはコードが短く、初心者でも非常に読みやすい言語です。Javaでは10行必要な処理でもPythonなら2行で書くことが出来る場合もあります。

コンパイルが不要

Pythonはインタプリタ言語のため、コンパイルの必要がなく、コーディングだけでプログラムを実行することができます。Pythonによる画像処理のメリットにもつながります。

ですがメリットばかりではありません。もちろんPythonにも弱点があります。

実行速度が遅い

Pythonはインタプリタ言語の中でも特に実行速度が遅いとされています。そのため、一般企業向けのシステムには不向きです。

バージョンが多い

Pythonはまず、初心者の大きな壁になるのがバージョン2と3の違い。そして他の言語とは大きく違う点です。このバージョンが違うと画像処理を行う時にもエラーが発生します。

そして、OpenCVにも弱点は存在します。

最新の機械学習は備えていない

Pythonには機械学習ができるライブラリが存在していますが、古典的な基本は揃えていますが、最新のサポートは不十分です。Pythonによる画像認識をOpenCVで行う場合、複雑なアルゴリズムを使うような処理はできません。

アルゴリズムを改良できない

研究用や開発用にコードをマイナーチェンジすることができません。最適化されているため、企業が使用する場合には想定している仕様に変更することができず、導入を見直すことも多いです。

といった点がデメリットです。これらに気をつけて取り組んでください。ですが、これらのデメリットは個人で扱う場合にはそれほど影響はありません。バージョンの違いだけは気をつけておきましょう。

 

エンジニアのイメージ

ここまで、OpenCVによるPythonを用いた画像処理の概要についてお伝えしました。

これらをまとめると

  • OpenCVはPythonで画像処理ができるライブラリ
  • OpenCVを使うことで容易に画像処理ができる
  • ある程度のPythonの知識が必要になる
  • OpenCVは汎用性があるが、拡張性がない
  • Pythonのバージョンには気をつけよう

画像処理技術は自動運転や顔認証技術など、これからの社会に必要不可欠な要素です。これらが発展すると、高齢者や障害者はもちろん、安全な社会になるでしょう。

ですから今後も改良されていくことは容易に想定されます。興味を持った方は是非、実際に手を動かしてみてください。

簡単にはいかないかもしれませんが是非トライしてみましょう。

トップへ戻る
タイトルとURLをコピーしました