Python画像解析 

Pythonを使ったOpenCVの導入方法(macOSバージョン)

はじめに

こんにちは。弊社ハリネズミ担当のSです。今回、筆者からはPythonでのOpenCVについての導入について紹介致します。

OpenCVとは

OpenCVは、オープンソースのライブラリで、様々が画像処理を行うことできます。Pythonでのバインディングもあることから、機械学習やデータ分析の行う際の画像加工や特徴量生成に有効活用することができます。

Pythonでの環境構築

pyenv + anaconda3-4.1.1 + python3.5 という仮想環境にして、OpenCVが動くようにします。

2017年8月1日時点では、Python3.6はOpenCVに対応していないようです。

OSは、macOS Sierra 10.12.5なります。mac環境にてpyenvがインストールされていること前提です。anaconda3-4.1.1のPythonは、versionが3.5.2です。

さて、早速対応するAnacondaをインストールします。

$ pyenv install anaconda3-4.1.1

インストールした上記anacondaに仮想環境に切り替えます。

$ pyenv local anaconda3-4.1.1

次にMenpoプロジェクトのpackageをcondaでインストールすると、
手軽にOpenCV3が導入できます。

$ conda install -c https://conda.binstar.org/menpo opencv3

なお、環境によってはエラーが出るかもしれませんが、筆者は下記をインストールしてエラーを消すことができました。

$ conda install hdf5
$ conda install html5lib

OpenCVの動作確認

ここで、OpenCVの動作確認をしてみましょう。画像処理で有名なレナさんの画像を表示してみます。“画像処理 レナ”などで検索すると落とすことができます。

%matplotlib inline
import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('lenna.png')
# RGB指定が必要
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img)

上記のようにレナさんが無事に表示されました。

顔認識

実際に顔認識を行なってみましょう。OpenCVで学習済みの識別器を持っており、特徴量を指定して使用できます。

#入力画像をグレー画像に変換    
gry = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

#顔認識の為の分類器。特徴量のpathを引数から入力
cascade_path = '/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
cascade = cv2.CascadeClassifier(cascade_path)

#顔認識を実行
#minNeighbors=20, minSize=(30, 30)→検出枠同士が近すぎる場合と、検出サイズが小さすぎる場合は除外する
facerect = cascade.detectMultiScale(gry, scaleFactor=1.05, minNeighbors=20, minSize=(30, 30))

# 今回は顔の検出の一つなるが、画像に依っては複数の顔を検出する
for rect in facerect:
    x, y, w, h = rect
    
    #画像に枠を描く。枠の色も指定する。
    color = (255, 0, 0)
    cv2.rectangle(img, (x, y), (x+w, y+h), color, thickness=2)
    
# 画像の表示
plt.imshow(img)

顔認識を行うことができました。

さいごに

今回はOpenCVの導入ということで、簡単な動作確認まで行うことができました。次回は実際に画像の特徴量を作成して、機械学習を用いた識別器の生成を行ってみたいと思います。



DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。

このページをシェアする: