|
|
@@ -30,6 +30,7 @@ import com.grkj.shared.utils.extension.isInCenterArea
|
|
|
import com.grkj.shared.utils.face.arcsoft.CameraHelper
|
|
|
import com.grkj.shared.utils.face.arcsoft.CameraListener
|
|
|
import com.grkj.shared.widget.FaceOverlayView
|
|
|
+import com.sik.sikcore.extension.toJson
|
|
|
import com.sik.sikcore.thread.ThreadUtils
|
|
|
import com.sik.sikimage.ImageConvertUtils
|
|
|
import com.sik.sikimage.ImageUtils
|
|
|
@@ -456,9 +457,9 @@ object FaceUtil {
|
|
|
|
|
|
override fun onPreview(nv21: ByteArray?, camera: Camera?) {
|
|
|
val p = previewSize ?: return
|
|
|
- val bmp = ImageConvertUtils.nv21ToBitmap(nv21, p.width, p.height)
|
|
|
|
|
|
if (backend == FaceBackend.HLK) {
|
|
|
+ val bmp = ImageConvertUtils.nv21ToBitmap(nv21, p.width, p.height)
|
|
|
callBack(bmp, registerUserIdAndLocalUserId[lastUserIdByHlk])
|
|
|
return
|
|
|
}
|
|
|
@@ -466,6 +467,7 @@ object FaceUtil {
|
|
|
// ARC:原流程
|
|
|
if (inDetecting) return
|
|
|
inDetecting = true
|
|
|
+ val bmp = ImageConvertUtils.nv21ToBitmap(nv21, p.width, p.height)
|
|
|
val fe = faceEngine ?: run { inDetecting = false; return }
|
|
|
val faces = mutableListOf<FaceInfo>()
|
|
|
var code = fe.detectFaces(nv21, p.width, p.height, FaceEngine.CP_PAF_NV21, faces)
|
|
|
@@ -498,8 +500,15 @@ object FaceUtil {
|
|
|
)
|
|
|
val searchResult =
|
|
|
runCatching { if (fe.faceCount > 0) fe.searchFaceFeature(ft) else null }.getOrNull()
|
|
|
- callBack(bmp, searchResult?.faceFeatureInfo?.searchId?.toLong())
|
|
|
- inDetecting = false
|
|
|
+ logger.info("人脸结果:${searchResult?.maxSimilar}")
|
|
|
+ if ((searchResult?.maxSimilar ?: 0f) > 0.5f) {
|
|
|
+ callBack(bmp, searchResult?.faceFeatureInfo?.searchId?.toLong())
|
|
|
+ } else {
|
|
|
+ callBack(null, null)
|
|
|
+ }
|
|
|
+ ThreadUtils.runOnMainDelayed(1000) {
|
|
|
+ inDetecting = false
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun onCameraClosed() {}
|
|
|
@@ -570,15 +579,16 @@ object FaceUtil {
|
|
|
faceFeature
|
|
|
)
|
|
|
val info = FaceFeatureInfo(uid.toInt(), faceFeature.featureData)
|
|
|
- try {
|
|
|
- if ((faceEngine?.searchFaceFeature(faceFeature)?.maxSimilar ?: 0f) > 0.5) {
|
|
|
- faceEngine?.updateFaceFeature(info)
|
|
|
- } else {
|
|
|
- faceEngine?.registerFaceFeature(info)
|
|
|
- }
|
|
|
- } catch (_: Exception) {
|
|
|
- faceEngine?.registerFaceFeature(info)
|
|
|
- }
|
|
|
+ faceEngine?.registerFaceFeature(info)
|
|
|
+// try {
|
|
|
+// if ((faceEngine?.searchFaceFeature(faceFeature)?.maxSimilar ?: 0f) > 0.5) {
|
|
|
+// faceEngine?.updateFaceFeature(info)
|
|
|
+// } else {
|
|
|
+// faceEngine?.registerFaceFeature(info)
|
|
|
+// }
|
|
|
+// } catch (_: Exception) {
|
|
|
+// faceEngine?.registerFaceFeature(info)
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
|