フォルダの中の画像ファイルを認識する
画像が入っているフォルダ(before_images)から画像を1枚づつ読み込み,顔認識済みの画像を処理用のフォルダに入れたいのですが,
自分の書いたコードでは1枚の顔認識済みの画像しか処理用のフォルダ(after_images)にしか入っていませんでした.
自分が作成したコードのどこに間違いがあるのか見つけることができなかったので教えてください.
下記の2つのサイトを参考にコードを作成しました.
http://qiita.com/Algebra_nobu/items/bcaeeb9c45e87b9d547a
http://qiita.com/wwacky/items/98d8be2844fa1b778323
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import sys
import os
import glob
# これは、BGRの順になっている気がする
color = (255, 0, 0) #青
# サンプル顔認識特徴量ファイル
cascade_path ="C:\Ana2\8.kikaigakusyuu\haarlow.xml"
# プログラムが存在するディレクトリの代入
current_dir = os.getcwd()
# 画像が存在するディレクトリの代入
before_images = glob.glob(current_dir + "\\before_images\\*")
i = 0
for image in before_images:
if image == current_dir + "\\before_images\\Thumbs.db":
continue
else:
# 画像の読み込み
image = cv2.imread(image)
# グレースケール変換
gray = cv2.cvtColor(image, cv2.cv.CV_BGR2GRAY)
# 分類器
cascade = cv2.CascadeClassifier(cascade_path)
# 認識実行
facerect = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
if len(facerect) > 0:
# 検出した顔を囲む矩形の作成
for rect in facerect:
cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness=2)
# 画像保存
cv2.imwrite(current_dir + '\\after_images\\' + str(i) + '.jpg', image)
i += 1