Video Analysis底层库拆分,sdk的go封装
chenshijun
2020-09-09 0541661d3e4a063d4e68b33e4d6dbb71d3b58638
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "quality.h"
 
#include "THFaceQuality_i.h"
#include "csdk_struct.h"
 
namespace csdk_wrap{
    int init_face_quality(const int tm, VecFunc &vec){
        auto ret = THFQ_Create(tm);
        if(ret != tm){
            printf("create face quality error\n");
        }else{
            vec.emplace_back([]{THFQ_Release();});
        }
        return ret;
    }
 
    void set_quality_params(const int min, const int max){
        int _min = (min<=10)?10:((min>=40)?40:min);
        int _max = (max>=90)?90:((max<=60)?60:max);
        const cThfqParam params{_min, _max};
        printf("set_quality_params : %d, %d\n", _min, _max);
 
        THFQ_SetParam((THFQ_Param*)&params);
    }
 
    cThfqResult* face_check_quality(const int chan, const cIMAGE *img, const cFacePos &pos){
        if(chan < 0 || !img){
            printf("face check quality error, image or pos null\n");
            return NULL;
        }
 
        cThfqResult *pResult = (cThfqResult*)malloc(sizeof(cThfqResult));
        auto ret = THFQ_Check(chan, (BYTE*)(img->data), 3, img->width, img->height, (THFI_FacePos*)(&pos), (THFQ_Result*)pResult);
        return pResult;
    }
 
    int face_check_quality_brightness(const int chan, const cIMAGE *img, const cFacePos &pos, int *nBrightness){
        if(!img){
            printf("face check quality error, image or pos null\n");
            return -1;
        }
 
        auto ret = THFQ_Check_Brightness(chan, (BYTE*)(img->data), 3, img->width, img->height, (THFI_FacePos*)(&pos), (int*)nBrightness);
        return ret;
    }
 
    int face_check_quality_occlusion(const int chan, const cIMAGE *img, const cFacePos &pos, int *nOcclusion){
        if(!img){
            printf("face check quality error, image or pos null\n");
            return -1;
        }
 
        auto ret = THFQ_Check_Occlusion(chan, (BYTE*)(img->data), 3, img->width, img->height, (THFI_FacePos*)(&pos), (int*)nOcclusion);
        return ret;
    }
    int face_check_quality_hat(const int chan, const cIMAGE *img, const cFacePos &pos, int *nHat){
        if(!img){
            printf("face check quality error, image or pos null\n");
            return -1;
        }
 
        auto ret = THFQ_Check_Hat(chan, (BYTE*)(img->data), 3, img->width, img->height, (THFI_FacePos*)(&pos), (int*)nHat);
        return ret;
    }
 
    int face_check_quality_blur_glass(const int chan, const cIMAGE *img, const cFacePos &pos, int* nBlur,int* nGlasses){
        if(!img){
            printf("face check quality error, image or pos null\n");
            return -1;
        }
 
        auto ret = THFQ_Check_BlurGlasses(chan, (BYTE*)(img->data), 3, img->width, img->height, (THFI_FacePos*)(&pos), (int*)nBlur, (int*)nGlasses);
        return ret;
    }
}