Face++APIの処理をフォルダ内の画像すべてに行えるようにしたい
Face++のdetectAPIを使ってフォルダ内の画像すべてに処理を行い。その結果を1つのcsvファイルに保存するプログラムを完成させたいです。
公式ドキュメントでは画像一枚だけに処理を行うコードが書かれているのですがそれを改変して書こうとしています。
機械学習用の画像データセットを作ろうと思い、
①画像をスクレイピングにて一括取得。
②取得した画像をカスケードファイルにて顔部分だけにリサイズ
まで行いました。
# coding: utf-8
import os
import sys
import csv
import pandas as pd
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
sys.path.append('E:/facepp-python-demo-master/facepp-python-demo-master/example/detect/images/images01/')
import requests
from config import API_KEY, API_SECRET, DETECT_PATH ,ANALYZE_PATH
from example.common import get_input_file_path
from example.common2 import get_image_file_path
import cv2
import codecs
return_landmark = 0
return_attributes = None
#calculate_all = 0
face_rectangle = ''
beauty_score_min = 0
beauty_score_max = 100
def call_api():
data = {
'api_key': API_KEY,
'api_secret': API_SECRET,
'return_landmark': 1,
'return_attributes': 'gender,age,emotion'
#'calculate_all': calculate_all,
#'beauty_score_min': beauty_score_min,
#'beauty_score_max': beauty_score_max
}
data_dir_path = u"E:/facepp-python-demo-master/facepp-python-demo-master/example/detect/images/images01"
file_list = os.listdir(r'E:/facepp-python-demo-master/facepp-python-demo-master/example/detect/images/images01')
#この内部の処理がうまくいっていない
##################################################
for f in file_list:
print(file_list)
#root, ext = os.path.splitext(f)
#if ext in ('.png', '.jpeg', '.jpg'):
#abs_name = data_dir_path +'/' + f
#image = cv2.imread(abs_name)
#以下各画像に対する処理を記載する
if face_rectangle:
data.update({'face_rectangle': face_rectangle})
input_file = get_input_file_path(os.path.abspath(os.path.dirname(__file__)), f)
#input_file = get_image_file_path("E:/facepp-python-demo-master/facepp-python-demo-master/example/detect/images/images01",f)
files = {
'image_file': open(f, 'rb').read()
}
resp = requests.post(DETECT_PATH, data=data, files=files).json()
with open('emotion.csv','w') as csv_file:
writer = csv.writer(csv_file)
for key, value in resp.items():
writer.writerows(resp)
(pd.DataFrame.from_dict(data=resp,orient='index').to_csv('emotion_csv',header=False))
osp = resp['faces']
df = pd.io.json.json_normalize(osp)
print(df)
df.to_csv('emotion2_csv')
#input_file = get_input_file_path(os.path.abspath(os.path.dirname(__file__)), 'input')
#if not face_rectangle:
#print('请将input.png/input.jpg文件放在detect目录下')
#return
#if not ext in ('.png', '.jpeg', '.jpg'):
#print("終了")
#(pd.DataFrame.from_dict(data=osp, orient='index').to_csv('emotion2_csv', header=False))
#print(resp['faces'])
################################################
if __name__ == "__main__":
call_api()
書く箇所にプリント文を挟んでみたところ、どこがうまくいっていないのかは理解できたのですが具体的にどうすればうまく処理が進むのかがわからず投稿させていただきました。
'E:/facepp-python-demo-master/facepp-python-demo-master/example/detect/images/images01
このプログラムはdetectフォルダにあるのですが処理を行いたい画像フォルダはimages/images01以下においてあるのです
Face++のdetectAPIを使ってディレクトリ内のすべての画像に感情推定の処理を行いその結果を一つのCSVファイルに保存させることが最終的な目標です。