質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenPose

OpenPoseとは、深層学習を使って人の体や指などの位置(座標)や向きといったポーズを可視化する技術。関節点など人の体における特徴点が座標のどこにあるかを検出することができます。高性能プロセッサを使えば動画像内の複数の人物もリアルタイムで検出することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1311閲覧

tf-pose-estimation を用いた姿勢推定でのリアルタイムでの座標取得

eggkun

総合スコア7

OpenPose

OpenPoseとは、深層学習を使って人の体や指などの位置(座標)や向きといったポーズを可視化する技術。関節点など人の体における特徴点が座標のどこにあるかを検出することができます。高性能プロセッサを使えば動画像内の複数の人物もリアルタイムで検出することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/06/24 01:02

前提

Python初心者です。

https://cam-inc.co.jp/p/techblog/603142844403680193

この記事を参考に姿勢推定を行いました。
座標取得を行いたいのですが記事にあるコードをサンプルコードのどこに差し込めばいいのかわかりませんでした。

実現したいこと

リアルタイムで姿勢推定を行っているときの座標取得
取得した座標をcsvファイルに書き込み 

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python

1 2import argparse 3import logging 4import time 5 6import cv2 7import numpy as np 8 9from tf_pose.estimator import TfPoseEstimator 10from tf_pose.networks import get_graph_path, model_wh 11 12logger = logging.getLogger('TfPoseEstimator-WebCam') 13logger.setLevel(logging.DEBUG) 14ch = logging.StreamHandler() 15ch.setLevel(logging.DEBUG) 16formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s') 17ch.setFormatter(formatter) 18logger.addHandler(ch) 19 20fps_time = 0 21 22 23if __name__ == '__main__': 24 parser = argparse.ArgumentParser(description='tf-pose-estimation realtime webcam') 25 parser.add_argument('--camera', type=int, default=0) 26 27 parser.add_argument('--resize', type=str, default='0x0', 28 help='if provided, resize images before they are processed. default=0x0, Recommends : 432x368 or 656x368 or 1312x736 ') 29 parser.add_argument('--resize-out-ratio', type=float, default=4.0, 30 help='if provided, resize heatmaps before they are post-processed. default=1.0') 31 32 parser.add_argument('--model', type=str, default='mobilenet_thin', help='cmu / mobilenet_thin / mobilenet_v2_large / mobilenet_v2_small') 33 parser.add_argument('--show-process', type=bool, default=False, 34 help='for debug purpose, if enabled, speed for inference is dropped.') 35 args = parser.parse_args() 36 37 logger.debug('initialization %s : %s' % (args.model, get_graph_path(args.model))) 38 w, h = model_wh(args.resize) 39 if w > 0 and h > 0: 40 e = TfPoseEstimator(get_graph_path(args.model), target_size=(w, h)) 41 else: 42 e = TfPoseEstimator(get_graph_path(args.model), target_size=(432, 368)) 43 logger.debug('cam read+') 44 cam = cv2.VideoCapture(args.camera) 45 ret_val, image = cam.read() 46 logger.info('cam image=%dx%d' % (image.shape[1], image.shape[0])) 47 48 while True: 49 ret_val, image = cam.read() 50 51 logger.debug('image process+') 52 humans = e.inference(image, resize_to_default=(w > 0 and h > 0), upsample_size=args.resize_out_ratio) 53 54 logger.debug('postprocess+') 55 image = TfPoseEstimator.draw_humans(image, humans, imgcopy=False) 56 57 logger.debug('show+') 58 cv2.putText(image, 59 "FPS: %f" % (1.0 / (time.time() - fps_time)), 60 (10, 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, 61 (0, 255, 0), 2) 62 cv2.imshow('tf-pose-estimation result', image) 63 fps_time = time.time() 64 if cv2.waitKey(1) == 27: 65 break 66 logger.debug('finished+') 67 68 cv2.destroyAllWindows() 69 70

python

1#追加したい部分(参考記事より抜粋) 2 3# 座標を取得 4# p = 関節の番号 5def findPoint(humans, p): 6 for human in humans: 7 8 try: 9 body_part = human.body_parts[p] 10 parts = [0,0] 11 12 # 座標を整数に切り上げで置換 13 parts[0] = int(body_part.x * width + 0.5) 14 parts[1] = int(body_part.y * height + 0.5) 15 16 # parts = [x座標, y座標] 17 return parts 18

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/06/24 11:42

> 座標取得を 画像中の座標ですか?推定値でもよいのでメートル単位でのカメラからの距離座標ですか? 参考:googleのmediapipeであればCPUの処理だけでリアルタイムに両方とも算出できて幸せになれます。 https://google.github.io/mediapipe/solutions/pose.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問