前提・実現したいこと
macOS Big Sar 11.4
Python3.6.12
anaconda3
動画を取り込んで測定を行なって書き出すということはhttps://zenn.dev/bboytaiso/articles/c46e4917e7b49e
上記サイトからできることは分かったのですが、検出した座標をCSVなどなんでもいいので数値を書き出すにはどうすれば良いか分からないのでお力添えが欲しいです。
import tensorflow as tf import cv2 import time import argparse import numpy as np import posenet parser = argparse.ArgumentParser() parser.add_argument('--model', type=int, default=101) parser.add_argument('--cam_id', type=int, default=0) parser.add_argument('--cam_width', type=int, default=1280) parser.add_argument('--cam_height', type=int, default=720) parser.add_argument('--scale_factor', type=float, default=0.7125) parser.add_argument('--file', type=str, default=None, help="Optionally use a video file instead of a live camera") args = parser.parse_args() def main(): with tf.Session() as sess: model_cfg, model_outputs = posenet.load_model(args.model, sess) output_stride = model_cfg['output_stride'] if args.file is not None: cap = cv2.VideoCapture(args.file) else: cap = cv2.VideoCapture(args.cam_id) cap.set(3, args.cam_width) cap.set(4, args.cam_height) start = time.time() frame_count = 0 output_video = None is_first = True try: while True: input_image, display_image, output_scale = posenet.read_cap( cap, scale_factor=args.scale_factor, output_stride=output_stride) if is_first: fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') fps = cap.get(cv2.CAP_PROP_FPS) output_video = cv2.VideoWriter('output.mp4', fmt, fps, (display_image.shape[1], display_image.shape[0])) is_first = False heatmaps_result, offsets_result, displacement_fwd_result, displacement_bwd_result = sess.run( model_outputs, feed_dict={'image:0': input_image} ) pose_scores, keypoint_scores, keypoint_coords = posenet.decode_multi.decode_multiple_poses( heatmaps_result.squeeze(axis=0), offsets_result.squeeze(axis=0), displacement_fwd_result.squeeze(axis=0), displacement_bwd_result.squeeze(axis=0), output_stride=output_stride, max_pose_detections=10, min_pose_score=0.15) keypoint_coords *= output_scale skeleton_img = np.zeros(display_image.shape, dtype=np.uint8) skeleton_img = posenet.draw_skeleton( skeleton_img, pose_scores, keypoint_scores, keypoint_coords, min_pose_confidence=0.1, min_part_confidence=0.1) # 検出元の画像と検出後の画像を両方表示する cv2.imshow('posenet', skeleton_img) cv2.imshow('src', display_image) frame_count += 1 output_video.write(skeleton_img) if cv2.waitKey(1) & 0xFF == ord('q'): break finally: if output_video: output_video.release() if __name__ == "__main__": main()
補足情報(FW/ツールのバージョンなど)
PoseNet自体は正常に動きます。
解決策でなくてもいいので何かアドバイスをいただければ嬉しいです。よろしくお願いいたします。
あなたの回答
tips
プレビュー