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와 같이 됩니다.)

목차


  • 데이터 준비
  • 궤도 gif 만들기
  • 참고 사이트

  • 데이터 준비



    마지막 기사 "htps : // 코 m / 복어 / ms / 299cf에서 96126007c6274 "
    를 참고로, 2D 좌표 데이터 리스트, frame 마다의 화상을 출력해 둡니다.

    궤도 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와 같은 궤도가 그려진 것이 만들어집니다.
    동작의 궤도에서 얻을 수 있는 것은 많다고 생각하므로 점점 사용해 가고 싶습니다.

    참고 사이트


  • 카라 아게 씨의 휴먼 시퀀서 (htps : //에서. 음 / 튀김 0703 / 음 / 음 78 굳게 26d 또는 4b5)
  • h tps:// 퀵했다. 작은 m/곧 p/있어 MS/에베 1c0783f5C4DB330d0
  • htps : // 코 m/시오오온/있어 ms/535f588베아7748에156f2
  • htps : // 이 m / 네 l / ms / 0d64167850566586d22
  • 좋은 웹페이지 즐겨찾기