OpenCVを使った顔認識を試してみる
インテルが開発・公開しているオープンソースのコンピュータビジョンのライブラリ OpenCV を試してみました。コンピュータビジョン(computer vision)とは、「ロボットの目」を作る研究分野だそうです。画像処理や構造解析、物体追跡などたくさんの機能が実装されていますが、その中でも多くの人が試している顔認識をやってみました。
Fedora 8だとパッケージが用意されているので、下記のコマンドでインストールできます。
# yum install opencv opencv-python
そして、使ったプログラムがこれ。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from opencv.cv import *
from opencv.highgui import *
def faceDetect(imgfile):
# 画像を読み込む
src_img = cvLoadImage(imgfile, CV_LOAD_IMAGE_COLOR)
src_gray = cvCreateImage(cvSize(src_img.width, src_img.height),
IPL_DEPTH_8U, 1)
# ブーストされた分類器のカスケードを読み込む
cascade_name = "haarcascade_frontalface_default.xml"
cascade = cvLoadHaarClassifierCascade(cascade_name, cvSize(1,1))
# メモリを確保し,読み込んだ画像のグレースケール化,ヒストグラムの均一化を行う
storage = cvCreateMemStorage(0)
cvClearMemStorage(storage)
cvCvtColor(src_img, src_gray, CV_BGR2GRAY)
cvEqualizeHist(src_gray, src_gray)
# 顔検出
faces = cvHaarDetectObjects(src_gray, cascade, storage,
1.11, 4, 0, cvSize(40, 40))
# 検出された全ての顔位置に枠を描画する
for c, i in enumerate(faces):
pt1 = cvPoint(int(i.x), int(i.y))
pt2 = cvPoint(int(i.x + i.width), int(i.y + i.height))
cvRectangle(src_img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0);
return src_img
if __name__ == '__main__':
if len(sys.argv) < 2:
print "Usage: facedetect <filename>\n" ;
sys.exit(-1)
img = faceDetect(sys.argv[1])
# 画像を出力
cvSaveImage("output.jpg", img)
これはいろいろ応用ができそうで面白いですね。haarcascade_frontalface_default.xml のパターンデータが肝なんだけど、自分で学習させようとする場合は、背景画像が3,000通り、対象物の画像が7,000通りくらい必要だそう。ただし、トレーニング用の画像を自動生成することも可能なようなので頑張ればできなくもなさそうですね。
その後、erogeekな人のプロジェクトはどうなったんだろう…
OpenCV プログラミングブック
posted with amazlet on 08.02.04
奈良先端科学技術大学院大学
毎日コミュニケーションズ (2007/09/22)
売り上げランキング: 4367
毎日コミュニケーションズ (2007/09/22)
売り上げランキング: 4367
関連リンク:
Open Source Computer Vision Library
opencv.jp - OpenCV サンプルコード
OpenCV for Linux












weboo said
on 2008-02-03 12:47 a.m.
ちなみに、うくく。の人がかなり前に試しています。
http://d.hatena.ne.jp/mopemope/20070316/...
negipo said
on 2008-02-24 9:19 p.m.
はじめまして
erogeekな人のプロジェクトは現在こうなってます
http://polog.tumblr.com/post/23533633
すごすぎ
weboo said
on 2008-02-25 8:51 p.m.
はじめまして
erogeekさんのプロジェクト進んでるんですねー、楽しみ。
negipoさんの InFullVolume.user.js も素敵すぎます!