|
|
@@ -1,164 +0,0 @@
|
|
|
-import glob
|
|
|
-import logging
|
|
|
-import subprocess as sp
|
|
|
-import time
|
|
|
-
|
|
|
-import cv2
|
|
|
-import numpy as np
|
|
|
-# from detectron2 import model_zoo
|
|
|
-# from detectron2.config import get_cfg
|
|
|
-# from detectron2.engine import DefaultPredictor
|
|
|
-# from detectron2.utils.logger import setup_logger
|
|
|
-
|
|
|
-from service.video.BaseVideoAnalyzer import BaseVideoAnalyzer
|
|
|
-
|
|
|
-
|
|
|
-# def get_resolution(filename):
|
|
|
-# command = ['ffprobe', '-v', 'error', '-select_streams', 'v:0',
|
|
|
-# '-show_entries', 'stream=width,height', '-of', 'csv=p=0', filename]
|
|
|
-# pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=-1)
|
|
|
-# for line in pipe.stdout:
|
|
|
-# w, h = line.decode().strip().split(',')
|
|
|
-# return int(w), int(h)
|
|
|
-
|
|
|
-
|
|
|
-# def read_video(filename):
|
|
|
-# w, h = get_resolution(filename)
|
|
|
-#
|
|
|
-# command = ['ffmpeg',
|
|
|
-# '-i', filename,
|
|
|
-# '-f', 'image2pipe',
|
|
|
-# '-pix_fmt', 'bgr24',
|
|
|
-# '-vsync', '0',
|
|
|
-# '-vcodec', 'rawvideo', '-']
|
|
|
-#
|
|
|
-# pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=-1)
|
|
|
-# while True:
|
|
|
-# data = pipe.stdout.read(w * h * 3)
|
|
|
-# if not data:
|
|
|
-# break
|
|
|
-# yield np.frombuffer(data, dtype='uint8').reshape((h, w, 3))
|
|
|
-#
|
|
|
-#
|
|
|
-# def run_3d(file_name):
|
|
|
-# cfg = get_cfg()
|
|
|
-# cfg_path = 'COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml'
|
|
|
-# cfg.merge_from_file(model_zoo.get_config_file(cfg_path))
|
|
|
-# cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7
|
|
|
-# cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(cfg_path)
|
|
|
-# predictor = DefaultPredictor(cfg)
|
|
|
-# input_folder = file_name
|
|
|
-# output_folder = file_name.replace(os.path.basename(file_name), "")
|
|
|
-#
|
|
|
-# if os.path.isdir(input_folder):
|
|
|
-# im_list = glob.iglob(input_folder + '/*.mp4')
|
|
|
-# else:
|
|
|
-# im_list = [input_folder]
|
|
|
-#
|
|
|
-# for video_name in im_list:
|
|
|
-# out_name = os.path.join(
|
|
|
-# output_folder, os.path.basename(video_name)
|
|
|
-# )
|
|
|
-# print('Processing {}'.format(video_name))
|
|
|
-#
|
|
|
-# boxes = []
|
|
|
-# segments = []
|
|
|
-# keypoints = []
|
|
|
-#
|
|
|
-# for frame_i, im in enumerate(read_video(video_name)):
|
|
|
-# t = time.time()
|
|
|
-# outputs = predictor(im)['instances'].to('cpu')
|
|
|
-#
|
|
|
-# print('Frame {} processed in {:.3f}s'.format(frame_i, time.time() - t))
|
|
|
-#
|
|
|
-# has_bbox = False
|
|
|
-# if outputs.has('pred_boxes'):
|
|
|
-# bbox_tensor = outputs.pred_boxes.tensor.numpy()
|
|
|
-# if len(bbox_tensor) > 0:
|
|
|
-# has_bbox = True
|
|
|
-# scores = outputs.scores.numpy()[:, None]
|
|
|
-# bbox_tensor = np.concatenate((bbox_tensor, scores), axis=1)
|
|
|
-# if has_bbox:
|
|
|
-# kps = outputs.pred_keypoints.numpy()
|
|
|
-# kps_xy = kps[:, :, :2]
|
|
|
-# kps_prob = kps[:, :, 2:3]
|
|
|
-# kps_logit = np.zeros_like(kps_prob) # Dummy
|
|
|
-# kps = np.concatenate((kps_xy, kps_logit, kps_prob), axis=2)
|
|
|
-# kps = kps.transpose(0, 2, 1)
|
|
|
-# else:
|
|
|
-# kps = []
|
|
|
-# bbox_tensor = []
|
|
|
-#
|
|
|
-# # Mimic Detectron1 format
|
|
|
-# cls_boxes = [[], bbox_tensor]
|
|
|
-# cls_keyps = [[], kps]
|
|
|
-#
|
|
|
-# boxes.append(cls_boxes)
|
|
|
-# segments.append(None)
|
|
|
-# keypoints.append(cls_keyps)
|
|
|
-#
|
|
|
-# # Video resolution
|
|
|
-# metadata = {
|
|
|
-# 'w': im.shape[1],
|
|
|
-# 'h': im.shape[0],
|
|
|
-# }
|
|
|
-#
|
|
|
-# np.savez_compressed(out_name, boxes=boxes, segments=segments, keypoints=keypoints, metadata=metadata)
|
|
|
-#
|
|
|
-#
|
|
|
-# def do_analysis(a_path, video_uuid, mode):
|
|
|
-# # tur = os.path.split(path)
|
|
|
-# try:
|
|
|
-# os.mkdir(UPLOAD_DIR + "./frames/" + video_uuid)
|
|
|
-# except:
|
|
|
-# pass
|
|
|
-#
|
|
|
-# # source_npy_side = a_path
|
|
|
-#
|
|
|
-# # output = open("./cap_file/" + name + "/file2" + ".txt", "w")
|
|
|
-# # output.close()
|
|
|
-#
|
|
|
-# result = {}
|
|
|
-# p = './capture_image/' + name + "/"
|
|
|
-# lenF = int(len(glob.glob(p + '*.png')) / 2)
|
|
|
-# # 对每一张图片的body_25点数据进行分析
|
|
|
-# for i in range(1, lenF): # run_openpose_for_normal(i)
|
|
|
-# if (mode == "jump"):
|
|
|
-# result_side = analyse_npy_side_jump(name, i, source_npy_side.format(i))
|
|
|
-# elif (mode == "pingban"):
|
|
|
-# result_side = analyse_npy_side_pingban(name, i, source_npy_side.format(i))
|
|
|
-# elif (mode == "juanfu"):
|
|
|
-# result_side = analyse_npy_side_juanfu(name, i, source_npy_side.format(i))
|
|
|
-# elif (mode == "gaotaitui"):
|
|
|
-# result_side = analyse_npy_side_gaotaitui(name, i, source_npy_side.format(i))
|
|
|
-# elif (mode == "shendun"):
|
|
|
-# result_side = analyse_npy_side_shendun(name, i, source_npy_side.format(i))
|
|
|
-#
|
|
|
-# if (result_side != False):
|
|
|
-# result[i] = result_side
|
|
|
-# # print(result[i])
|
|
|
-#
|
|
|
-# output = open("./cap_file/" + name + "/file1.txt", "w")
|
|
|
-# for re in result:
|
|
|
-# print(re, file=output)
|
|
|
-# for (name, value) in result[re].items():
|
|
|
-# print(name, value, sep=',', file=output)
|
|
|
-# print("kv-over", file=output)
|
|
|
-# output.close()
|
|
|
-
|
|
|
-
|
|
|
-class Video3DAnalyzer(BaseVideoAnalyzer):
|
|
|
- """Perform inference on a single video"""
|
|
|
-
|
|
|
- def __init__(self):
|
|
|
- super().__init__()
|
|
|
-
|
|
|
- def analyze(self, filename):
|
|
|
- pass
|
|
|
- # setup_logger()
|
|
|
- # return run_3d(filename)
|
|
|
-
|
|
|
-
|
|
|
-if __name__ == '__main__':
|
|
|
- split_video("original")
|
|
|
- run_openpose_for_frames("original")
|