tf_pose_estimationで複数画像保存と複数jsonファイル出力
shファイル
for i in seq 0 500
do
python3 run1.py --image=./1/No_10001/No_10001_a_00000029_$i.png --model mobilenet_thin --output_json=./movie/data/ --number_people_max 1
done
を実行して
tf_pose_estimationを使用して複数画像保存と複数jsonファイル出力を行いたい
発生している問題・エラーメッセージ
複数画像保存、複数jsonファイル保存ができず、更新しながらtest.jpg、000000000000_keypoints.jsonとして保存してしまう。
該当のソースコード
run.py
1import argparse 2import logging 3import sys 4import time 5 6from tf_pose import common 7import cv2 8import numpy as np 9from tf_pose.estimator import TfPoseEstimator 10from tf_pose.networks import get_graph_path, model_wh 11 12logger = logging.getLogger('TfPoseEstimatorRun') 13logger.handlers.clear() 14logger.setLevel(logging.DEBUG) 15ch = logging.StreamHandler() 16ch.setLevel(logging.DEBUG) 17formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s') 18ch.setFormatter(formatter) 19logger.addHandler(ch) 20 21 22if __name__ == '__main__': 23 parser = argparse.ArgumentParser(description='tf-pose-estimation run') 24 parser.add_argument('--image', type=str, default='./images/p1.jpg') 25 parser.add_argument('--model', type=str, default='cmu', 26 help='cmu / mobilenet_thin / mobilenet_v2_large / mobilenet_v2_small') 27 parser.add_argument('--resize', type=str, default='0x0', 28 help='if provided, resize images before they are processed. ' 29 'default=0x0, Recommends : 432x368 or 656x368 or 1312x736 ') 30 parser.add_argument('--number_people_max', type=int, default=1, help='maximum number of people') 31 parser.add_argument('--resize-out-ratio', type=float, default=4.0, 32 help='if provided, resize heatmaps before they are post-processed. default=1.0') 33 parser.add_argument('--output_json', type=str, default='/tmp/', help='writing output json dir') 34 args = parser.parse_args() 35 36 w, h = model_wh(args.resize) 37 if w == 0 or h == 0: 38 e = TfPoseEstimator(get_graph_path(args.model), target_size=(432, 368)) 39 else: 40 e = TfPoseEstimator(get_graph_path(args.model), target_size=(w, h)) 41 42 # estimate human poses from a single image ! 43 image = common.read_imgfile(args.image, None, None) 44 if image is None: 45 logger.error('Image can not be read, path=%s' % args.image) 46 sys.exit(-1) 47 48 t = time.time() 49 humans = e.inference(image, resize_to_default=(w > 0 and h > 0), upsample_size=args.resize_out_ratio) 50 elapsed = time.time() - t 51 52 logger.info('inference image: %s in %.4f seconds.' % (args.image, elapsed)) 53 54 image = TfPoseEstimator.draw_humans(image, humans, imgcopy=False, frame=0, output_json_dir=args.output_json) 55 cv2.imwrite('./movie/img/test.jpg', image) 56
#estimator.py(jsonファイル出力 一部分) if output_json_dir: with open(os.path.join(output_json_dir, '{0}_keypoints.json'.format(str(frame).zfill(12))), 'w') as outfile: json.dump(dc, outfile)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/06 01:20
2021/10/06 04:07