From 0541661d3e4a063d4e68b33e4d6dbb71d3b58638 Mon Sep 17 00:00:00 2001 From: chenshijun <chenshijun@aiotlink.com> Date: 星期三, 09 九月 2020 09:48:15 +0800 Subject: [PATCH] 添加人脸质量的so --- gosdk.go | 100 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 99 insertions(+), 1 deletions(-) diff --git a/gosdk.go b/gosdk.go index f0e6bb4..ae73eb2 100644 --- a/gosdk.go +++ b/gosdk.go @@ -8,7 +8,7 @@ #cgo LDFLAGS: -L/usr/local/cuda/lib64 -L${SRCDIR}/sdk/face/lib/gpu -L${SRCDIR}/sdk/darknet/lib #cgo LDFLAGS: -L${SRCDIR}/sdk/plate/eparking/lib -L${SRCDIR}/sdk/plate/cloud/lib -L${SRCDIR}/sdk/plate/vehicle/lib #cgo LDFLAGS: -Wl,-rpath,${SRCDIR}/sdk/face/lib/gpu:${SRCDIR}/sdk/darknet/lib:${SRCDIR}/sdk/plate/cloud/lib:${SRCDIR}/sdk/plate/vehicle/lib -#cgo LDFLAGS: -ldarknet -lTHFaceImage -lTHFeature -lTHFaceProperty -lTHFaceTracking -lcudart -lcublas -lcurand -lrt -ldl -lpthread -lthplateid -lLPRecognition +#cgo LDFLAGS: -ldarknet -lTHFaceImage -lTHFaceQuality -lTHFeature -lTHFaceProperty -lTHFaceTracking -lcudart -lcublas -lcurand -lrt -ldl -lpthread -lthplateid -lLPRecognition #cgo LDFLAGS: -lVehicleTypeRecognition -lFeatureExtraction #include <stdlib.h> #include "csdk.h" @@ -73,6 +73,18 @@ C.c_api_face_tracker_init(C.int(tm), C.int(gi), C.int(w), C.int(h), C.int(maxFaces), C.int(interval), C.int(sample)) } +// InitFaceQuality init face quality +func InitFaceQuality(tm int) { + + C.c_api_face_quality_init(C.int(tm)) +} + +// SetFaceQualityParams set face quality params +func SetFaceQualityParams(min, max int) { + + C.c_api_set_quality_params(C.int(min), C.int(max)) +} + // ResizeFaceTracker init face tracker func ResizeFaceTracker(ch, w, h int) int { @@ -128,6 +140,92 @@ return b } + +// FaceQuality face check quality +func FaceQuality(fpos CFacePos, img SDKImage, ch int) CThfqResult { + + data := img.Data + w := img.Width + h := img.Height + + pos := (*C.cFacePos)(unsafe.Pointer(&fpos)) + result := C.c_api_face_check_quality(pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch)) + + return *((*CThfqResult)(unsafe.Pointer(&result))) +} + +// FaceQuality face check quality +func FaceQualityBrightness(fpos CFacePos, img SDKImage, ch int) int { + + data := img.Data + w := img.Width + h := img.Height + + var brightness, ret C.int + pos := (*C.cFacePos)(unsafe.Pointer(&fpos)) + + ret = C.c_api_face_check_quality_brightness(pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch), &brightness) + if ret == -1 { + return -1 + } + + return int(brightness) +} + +// FaceQuality face check quality +func FaceQualityOcclusion(fpos CFacePos, img SDKImage, ch int) int { + + data := img.Data + w := img.Width + h := img.Height + + var occlusion, ret C.int + pos := (*C.cFacePos)(unsafe.Pointer(&fpos)) + + ret = C.c_api_face_check_quality_occlusion(pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch), &occlusion) + if ret == -1 { + return -1 + } + + return int(occlusion) +} + +// FaceQuality face check quality +func FaceQualityHat(fpos CFacePos, img SDKImage, ch int) int { + + data := img.Data + w := img.Width + h := img.Height + + var hat, ret C.int + pos := (*C.cFacePos)(unsafe.Pointer(&fpos)) + + ret = C.c_api_face_check_quality_hat(pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch), &hat) + if ret == -1 { + return -1 + } + + return int(hat) +} + +// FaceQuality face check quality +func FaceQualityBlurGlass(fpos CFacePos, img SDKImage, ch int) (int, int) { + + data := img.Data + w := img.Width + h := img.Height + + var blur, glass, ret C.int + pos := (*C.cFacePos)(unsafe.Pointer(&fpos)) + + ret = C.c_api_face_check_quality_blur_glass(pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch), &blur, &glass) + if ret == -1 { + return -1, -1 + } + + return int(blur), int(glass) +} + // FaceCompare face compare func FaceCompare(feat1 []byte, feat2 []byte) float32 { res := C.c_api_face_compare((*C.uchar)(unsafe.Pointer(&feat1[0])), (*C.uchar)(unsafe.Pointer(&feat2[0]))) -- Gitblit v1.8.0