tf-pose-estimation을 사용하여 동영상의 자세 추정 및 궤도 그리기
소개
마지막 기사 "htps : // 코 m / 복어 / ms / 299cf에서 96126007c6274 "
그럼, tf-pose-estimation( htps : // 기주 b. 코 m / I ldoone t / tf Posee s Chimachion )
를 사용하여 동영상에서 자세 추정과 2D 좌표 출력을 수행했습니다.
이번에는, 출력한 2D 좌표를 이용해, 동영상(gif)상에 마디마다의 궤도를 그리게 합니다(결과는 서두의 gif와 같이 됩니다.)
목차
데이터 준비
마지막 기사 "htps : // 코 m / 복어 / ms / 299cf에서 96126007c6274 "
를 참고로, 2D 좌표 데이터 리스트, frame 마다의 화상을 출력해 둡니다.
궤도 gif 만들기
이 데이터를 사용하여 각 프레임의 이미지에 2D 좌표 데이터 목록에서 각 섹션의 점을 덮어 씁니다. nframe 눈에는 nframe,(n-1)frame... 의 절을 플롯하고 있습니다. 이러한 이미지를 모아 gif로 하는 것으로, 궤도를 알 수 있는 gif가 작성되도록 하고 있습니다.
jupyter notebook 환경에서 실행했습니다.
graph.pyimport pandas as pd
import numpy as np
import os
import codecs
import cv2
import glob
from PIL import Image
#2D座標リスト
df= pd.read_csv('cmu_dance_2ddata.csv')
#各節の軌道の色設定(0~18節)
colors = [[255,0,0],[0,255,0],[0,0,255],[255,255,0],[255,0,255]
,[0,255,255],[0,255,0],[0,0,255],[255,255,0],[255,0,255]
,[0,255,255],[0,255,0],[0,0,255],[255,255,0],[255,0,255]
,[0,255,255],[0,255,0],[0,0,255]]
#合計frameとframe間隔設定
frame = 135
term = 5
sizex = 1280
sizey = 720
for m in range(0,frame+term,term):
#各frameの画像読み込み
img = cv2.imread('brabra/cmu_dance_' + str(m) + '_data.jpg')
#サイズ変換
img = cv2.resize(img,(sizex,sizey))
#そのframeまでの節を画像に上書き描画
for i in range(0,m+5,5):
dfa = df[(df['flame']==i)]
try:
max(dfa['human'])
except:
continue
for j in range(1,max(dfa['human'])+1):
dfb = dfa[(dfa['human']==j)]
for k in range(0,19):
dfc = dfb[(dfb['point'] == k)]
try:
cv2.circle(img, (int(dfc['x']), int(dfc['y'])), 3, colors[k], -1)
except:
continue
#各frameで画像保存
cv2.imwrite('brabra/cmu_dance_' + str(m) + '_data_curve.jpg', img)
#gif化
files = []
for i in range(0,frame+term,term):
filepath = 'brabra/cmu_dance_' + str(i) + '_data_curve.jpg'
files.append(filepath)
images = list(map(lambda file: Image.open(file), files))
images[0].save('C:brabra/cmu_dance_curve' + str(term) + '.gif',
save_all=True, append_images=images[1:], interval=330, loop=0)
실행하면 시작의 gif와 같은 궤도가 그려진 것이 만들어집니다.
동작의 궤도에서 얻을 수 있는 것은 많다고 생각하므로 점점 사용해 가고 싶습니다.
참고 사이트
이 데이터를 사용하여 각 프레임의 이미지에 2D 좌표 데이터 목록에서 각 섹션의 점을 덮어 씁니다. nframe 눈에는 nframe,(n-1)frame... 의 절을 플롯하고 있습니다. 이러한 이미지를 모아 gif로 하는 것으로, 궤도를 알 수 있는 gif가 작성되도록 하고 있습니다.
jupyter notebook 환경에서 실행했습니다.
graph.py
import pandas as pd
import numpy as np
import os
import codecs
import cv2
import glob
from PIL import Image
#2D座標リスト
df= pd.read_csv('cmu_dance_2ddata.csv')
#各節の軌道の色設定(0~18節)
colors = [[255,0,0],[0,255,0],[0,0,255],[255,255,0],[255,0,255]
,[0,255,255],[0,255,0],[0,0,255],[255,255,0],[255,0,255]
,[0,255,255],[0,255,0],[0,0,255],[255,255,0],[255,0,255]
,[0,255,255],[0,255,0],[0,0,255]]
#合計frameとframe間隔設定
frame = 135
term = 5
sizex = 1280
sizey = 720
for m in range(0,frame+term,term):
#各frameの画像読み込み
img = cv2.imread('brabra/cmu_dance_' + str(m) + '_data.jpg')
#サイズ変換
img = cv2.resize(img,(sizex,sizey))
#そのframeまでの節を画像に上書き描画
for i in range(0,m+5,5):
dfa = df[(df['flame']==i)]
try:
max(dfa['human'])
except:
continue
for j in range(1,max(dfa['human'])+1):
dfb = dfa[(dfa['human']==j)]
for k in range(0,19):
dfc = dfb[(dfb['point'] == k)]
try:
cv2.circle(img, (int(dfc['x']), int(dfc['y'])), 3, colors[k], -1)
except:
continue
#各frameで画像保存
cv2.imwrite('brabra/cmu_dance_' + str(m) + '_data_curve.jpg', img)
#gif化
files = []
for i in range(0,frame+term,term):
filepath = 'brabra/cmu_dance_' + str(i) + '_data_curve.jpg'
files.append(filepath)
images = list(map(lambda file: Image.open(file), files))
images[0].save('C:brabra/cmu_dance_curve' + str(term) + '.gif',
save_all=True, append_images=images[1:], interval=330, loop=0)
실행하면 시작의 gif와 같은 궤도가 그려진 것이 만들어집니다.
동작의 궤도에서 얻을 수 있는 것은 많다고 생각하므로 점점 사용해 가고 싶습니다.
참고 사이트
Reference
이 문제에 관하여(tf-pose-estimation을 사용하여 동영상의 자세 추정 및 궤도 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fugunoko/items/8010a4552a4dc01cf4a2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)