Pythonを使いこなすには、ライブラリの利用は欠かせません。
今回はインテルのエンジニアが開発した、画像処理機能を持つオープンライブラリ「OpenCV」について詳しく解説します。
また、基本的な使い方やインストール方法などを、以下でみていきましょう。
Pythonのライブラリ「OpenCV」とは
「OpenCV」とは、画像の認識や処理(トリミング・リサイズ・減色処理)、あるいは動画内の物体の検出ができるライブラリです。
このOpenCVに関するプロジェクトが開始したのは1999年。それ以来、5度のバージョンアップを経て、2006年に正式版がリリースされました。
Pythonのライブラリについてはこちらの記事で詳しく解説しています。
OpenCVを導入するメリットとは
OpenCVを導入するメリットとして、その使いやすさが挙げられます。このOpenCVは、基本的なメソッドを覚えさえすれば、プログラミング初心者であっても簡単に機能を追加し、画像処理や機械学習が始められるでしょう。
くわえて、OpenCVは効率的な画像処理が可能です。例えば、機械学習の準備段階にOpenCVを用いれば、AI開発の初心者であっても効率的に機械学習をすすめられるでしょう。
また、OpenCVは一般的にPythonで用いられていますが、他にもC++やJavaなど複数のプログラム言語においてもライブラリとして利用可能です。さらに、対応しているOS環境も幅広く、Windows・macOS・Linuxのみならず、iOSやAndroidにも対応しています。
プラグインを用いれば、Unityの開発にOpenCVを導入することもできるでしょう。
環境をあまり選ばずに使える点は、OpenCVを導入するうえでの大きなメリットといえるでしょう。
また、OpenCVは他のライブラリとの組み合わせが容易です。他のライブラリと機能を組み合わせすることで、より高度で多様な処理が可能になります。
OpenCVを使ってできること
OpenCVの機能は多岐にわたります。まず「imread」というメソッド(オブジェクト関数のようなもの)を使うことによって、画像を読み込んで表示することが可能です。
表示した画像に対しての編集機能も備わっており、例えば、上下左右の反転・回転やグレースケール調整、画像データのリサイズ・ノイズ除去などができます。
これらの機能は、画像の作成だけでなく、AI(人工知能)における機械学習に応用されています。機械学習では何百万、何千万枚といった、膨大な画像データが用いられることが一般的です。
そのため、元データを編集せずに読み込ませることは、データの質と量の双方において、非効率的な作業の原因となりかねません。
そこで、OpenCVを使用して、画像サイズや向き、グレースケールなどをあらかじめ調整しておけば、効率的に機械学習がすすめられるようになります。
さらにOpenCVを使えば、物体検出も可能になるでしょう。OpenCVでは、「バウンディングボックス」と呼ばれる領域内に画像を捉えることで、画像をピクセルの集りではなく、物体として検出できます。
この機能を使えば、AIの機械学習のデータの精度をさらに向上させることができるでしょう。
また、「matchTemplate」メソッドを用いれば、複数の画像から類似部分を見つけ出す「テンプレートマッチング」も可能です。
バウンディングボックスと組み合わせて使用すれば、高精度の画像検出や分析ツールとしてOpenCVが活用できます。
pipで簡単にOpenCVをインストールする方法
今回は、Pythonを使用することを前提として、OpenCVをインストールする方法を紹介していきます。Pythonを既にインストールしている環境であれば、「pip」を用いる方法でOpenCVのインストール作業をするのがおすすめです。
このpipとは、Pythonで用いられているパッケージインストーラーのことを指し、ライブラリなどのインストールや管理などをしています。
LinuxやmacOSの場合は、「Terminal(ターミナル)」上からpipを呼び出し、OpenCVのインストールを行います。まず、Terminalを開き、以下のコマンドの入力と実行をしてください。
pip install opencv-python
実際に、OpenCVのインストールが完了したかを確認するためには、次のコマンドを入力したうえで実行します。
import cv2print(cv2.__version__)
無事にインストール処理が完了していれば、このコマンドによって、OpenCVのバージョンを表示することができるでしょう。
Pythonのインストール方法についてはこちらの記事で解説しています。
WindowsでOpenCVをインストールするには?
pipを用いたインストール方法は、Windowsにおいても使えます。windowsの場合は「コマンドプロンプト」を開き、以下のコマンドを入力して、実行してください。
pip install opencv-python
インストールができたかを確認するには、同じくコマンドプロンプトを用い、以下のコマンドを入力・実行しましょう。
import cv2print(cv2.__version__)
pipはあくまでもPythonに付加されている機能です。そのため、pipを用いるにはあらかじめPythonをインストールしておく必要があるでしょう。
なお、Python本体をインストールする際は、公式サイトにあるインストーラー付きのパッケージをダウンロードする方法をおすすめします。
インストールできない場合は?対処法を4つ紹介
正しく手順を踏んだはずなのにOpenCVをインストールできない場合には、次の方法を試してください。
pipを使わずHomebrewでインストールする
macOSを使っている場合は、「Homebrew」を使うことで、openCVがインストールできる可能性があるでしょう。
このHomebrewとは、macOSにおいて用いられている、パッケージマネージャーのことです。インストールするためには、ターミナルにおいて次のコマンドを入力してください。
brew install opencv
これでOpenCVがインストールできるはずです。ちなみに、HomebrewはLinuxでも利用できます。ただし、あらかじめHomebrewをインストールしておかなければなりません。
pipのバージョンを新しくする
利用しているpipのバージョンがPython本体のバージョンとずれている場合、OpenCVのインストールが失敗することがあるでしょう。
macOSやLinuxでは「ターミナル」を、Windowsでは「コマンドプロンプト」を開き、以下のようにコマンドを入力・実行してください。
pip install --upgrade pip
動作がうまくいかない場合は、以下のコマンドを順次試してください。
pip3 install --upgrade pippython -m pip install --upgrade pippython3 -m pip install --upgrade pip
Pythonをアップデート
Python本体のバージョンが古いことが理由で、OpenCVのインストールが失敗する可能性もあります。
特段の理由がないのであれば、最新版をインストールしましょう。まず、現在インストールされているPythonのバージョンを確認します。次に挙げるコマンドを、入力してください。
python --version
これによって現在のPythonのバージョンが示されるでしょう。次に、Pythonの公式サイトをチェックして、使用しているPythonが最新バージョンであるか確認しましょう。
もし、バージョンが古くなっている場合には、使用しているOS用の最新バージョンのインストーラー付いているPythonをダウンロードしたうえで、インストール作業を行います。そして、インストールが済んだなら、pipを用いて再度OpenCVをダウンロードしてください。
Anacondaを削除する
Pythonでは、オープンソースディストリビューションの「Anaconda」がよく用いられています。しかし、Anacondaが邪魔をしてOpenCVなどをインストールできなくなる場合があります。
もし、Anacondaを利用している環境で、上述の方法を試してもOpenCVがインストールできないのであれば、一度Anacondaを削除してみましょう。そのうえで、pipを用いてOpenCVのインストールを試してみることをおすすめします。
OpenCVの基本的な画像編集方法を紹介
「OpenCV」を利用する際には、まずライブラリを読み込むための「宣言コマンド」をプログラムコードの先頭に追加する必要があります。以下がそのコマンドです。
import cv2
これでOpenCVライブラリを読み込む宣言が完了しました。以降、プログラム中でOpenCVが利用できます。次に、画像の取り扱い方を通して、OpenCVの基本的な使い方を解説していきます。
画像の読み込みと表示方法
画像の読み込みをする場合は「imread」のメソッドを用います。また、読み込んだ画像は「imshow」メソッドでウインドウに表示させられます。
例えば、「example.jpg」というファイルを読み込み、画像表示させるには次のように入力しましょう。
import cv2image = cv2.imread('example.jpg')cv2.imshow('example', image)
「cv2.imshow(‘example’, image)」における「‘example’」はウインドウに表示されるタイトル名です。変更することで、指定したタイトル名にできます。なお、次のように続けて入力すると、キー操作によってウインドウが閉じるようにできます。
cv2.waitKey(0)cv2.destroyAllWindows()
「cv2.waitKey(0)」とは、キー入力があるまでプログラムを待機させるコマンドです。待機後にキー入力がなされると「destroyAllWindows」メソッドによって、表示されたウインドウはすべて閉じられます。
画像のグレースケール化
画像検索や機械学習をする際に、余分なカラーのデータは、画像情報の精度を悪くする場合があるかもしれません。
よって、画像情報の精度を上げるためには、画像をグレースケール化するとよいでしょう。OpenCVでは次のようなコマンド入力を行うと、簡単に画像のグレースケール化ができるでしょう。
import cv2image = cv2.imread('example.jpg')gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
画像の輪郭を描画する
画像の輪郭だけを描画すれば、描かれているオブジェクトを具体的に把握しやすくなります。
描かれている画像の輪郭だけを描写する場合は「drawContours」メソッドが便利です。以下において、グレースケール化した画像の輪郭を描画し、表示するまでのコマンドを示します。
import cv2image = cv2.imread('example.jpg')gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)contours, _ = cv2.findContours(gray_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)contour_image = image.copy()cv2.drawContours(contour_image, contours, -1, (0, 255, 0), 2)cv2.imshow('Contour Image', contour_image)
「contours, _ = cv2.findContours(gray_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)」における「findContours」とは、画像の輪郭を検出するメソッドです。
()内に記されているのは、検出に用いるためのパラメーターです。パラメーターには「RETR_EXTERNAL」「CHAIN_APPROX_SIMPLE」という2つのメソッドが組み込まれています。
「RETR_EXTERNAL」は、最も外側の輪郭のみを検出するメソッドです。
「CHAIN_APPROX_SIMPLE」は、水平・垂直・斜めに連続した点を取り出し、残りの点を破棄することによって、輪郭を圧縮します。
これらを用いることで、輪郭の最も外側のみに線(圧縮された点)が描画されるようになります。
「contour_image = image.copy()」は、輪郭を描画するために用いる空の画像を作成するためのコマンドです。
その後にある「cv2.drawContours(contour_image, contours, -1, (0, 255, 0), 2)」によって、実際に空の画像に輪郭の描画が行われます。
最後に書かれている数字の意味は、「-1」が輪郭のインデックス、「(0, 255, 0)」が輪郭のカラー、「2」が輪郭の線の太さです。
ちなみにPythonの使い方を短期間で習得したい方には、AI研究所のPython基礎セミナー講習がおすすめです。OpenCVによる画像処理をはじめ、実務で使えるスキルを2日でマスターできます。
便利で無料で使えるPythonライブラリOpenCV
「OpenCV」は、無料で使える画像編集に便利なライブラリです。
導入方法も使い方も複雑ではないので、初心者でも気軽に導入できます。さまざまなOS環境やプログラム言語に対応しているので、誰にとっても使いやすいかもしれません。
なお、公式ドキュメント「OpenCV-Python Tutorials」には、使用目的に合ったメソッドが紹介されています。これを参考にすれば、よりOpenCVが使いやすくなるでしょう。
なおOpenCVの使い方を含めたPythonのスキルをマスターしたい方は、AI研究所のPython基礎セミナー講習の受講をおすすめします。