Exemplo n.º 1
0
class SKP:
    def __init__(self):
        super().__init__()
        check_license_and_variables_exist()
        self.body = Body()
        self.confidence_threshold = 0.5
        self.skp_output_path = "skp_output"
        self.api = Api(default_license_dir())
        self.model_path = os.path.join(
            os.environ["CUBEMOS_SKEL_SDK"], "models", "skeleton-tracking", "fp32", "skeleton-tracking.cubemos"
        )
        self.api.load_model(CM_TargetComputeDevice.CM_CPU, self.model_path)

    def get_skp_from_pic(self, pic_path):
        try:
            img = cv2.imread(pic_path)
            skeletons = self.api.estimate_keypoints(img, 192)
            file_name = os.path.basename(pic_path)
            with open("{}/{}.json".format(self.skp_output_path, os.path.splitext(file_name)[0]), "w") as f:
                skps = dict()
                for i in skeletons:
                    self.body.set_body(i)
                    id = str(skeletons.index(i))
                    skps[id] = dict()
                    skps[id]['key_frame'] = int(os.path.splitext(file_name)[0].split('_')[-1])
                    skps[id]['head'] = self.body.get_head_coordinates()
                    skps[id]['angles'] = self.body.calculate_angles()
                json.dump(skps, f)

            # isSaved = cv2.imwrite("{}/{}".format(self.output_path, file_name), img)
            # return True if isSaved else False

        except Exception as ex:
            print("Exception occured: \"{}\"".format(ex))