-
Notifications
You must be signed in to change notification settings - Fork 153
/
AccuratePoseDetectionActivity.kt
79 lines (74 loc) · 4.02 KB
/
AccuratePoseDetectionActivity.kt
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
76
77
78
79
package com.king.mlkit.vision.app.pose
import android.widget.ImageView
import com.google.mlkit.vision.pose.Pose
import com.king.app.dialog.AppDialog
import com.king.app.dialog.AppDialogConfig
import com.king.camera.scan.AnalyzeResult
import com.king.mlkit.vision.app.R
import com.king.mlkit.vision.app.drawRect
import com.king.mlkit.vision.pose.accurate.AccuratePoseCameraScanActivity
/**
* 姿势检测(精确版)示例
* @author <a href="mailto:[email protected]">Jenly</a>
*/
class AccuratePoseDetectionActivity : AccuratePoseCameraScanActivity() {
override fun onScanResultCallback(result: AnalyzeResult<Pose>) {
if (result.result.allPoseLandmarks.isNullOrEmpty()) {
// 过滤掉空数据,继续分析
cameraScan.setAnalyzeImage(true)
return
}
cameraScan.setAnalyzeImage(false)
val bitmap = result.bitmap?.drawRect { canvas, paint ->
for (data in result.result.allPoseLandmarks) {
canvas.drawCircle(data.position.x, data.position.y, 6f, paint)
}
}
// val pose = result.result
// // Or get specific PoseLandmarks individually. These will all be null if no person
// val leftShoulder = pose.getPoseLandmark(PoseLandmark.LEFT_SHOULDER)
// val rightShoulder = pose.getPoseLandmark(PoseLandmark.RIGHT_SHOULDER)
// val leftElbow = pose.getPoseLandmark(PoseLandmark.LEFT_ELBOW)
// val rightElbow = pose.getPoseLandmark(PoseLandmark.RIGHT_ELBOW)
// val leftWrist = pose.getPoseLandmark(PoseLandmark.LEFT_WRIST)
// val rightWrist = pose.getPoseLandmark(PoseLandmark.RIGHT_WRIST)
// val leftHip = pose.getPoseLandmark(PoseLandmark.LEFT_HIP)
// val rightHip = pose.getPoseLandmark(PoseLandmark.RIGHT_HIP)
// val leftKnee = pose.getPoseLandmark(PoseLandmark.LEFT_KNEE)
// val rightKnee = pose.getPoseLandmark(PoseLandmark.RIGHT_KNEE)
// val leftAnkle = pose.getPoseLandmark(PoseLandmark.LEFT_ANKLE)
// val rightAnkle = pose.getPoseLandmark(PoseLandmark.RIGHT_ANKLE)
// val leftPinky = pose.getPoseLandmark(PoseLandmark.LEFT_PINKY)
// val rightPinky = pose.getPoseLandmark(PoseLandmark.RIGHT_PINKY)
// val leftIndex = pose.getPoseLandmark(PoseLandmark.LEFT_INDEX)
// val rightIndex = pose.getPoseLandmark(PoseLandmark.RIGHT_INDEX)
// val leftThumb = pose.getPoseLandmark(PoseLandmark.LEFT_THUMB)
// val rightThumb = pose.getPoseLandmark(PoseLandmark.RIGHT_THUMB)
// val leftHeel = pose.getPoseLandmark(PoseLandmark.LEFT_HEEL)
// val rightHeel = pose.getPoseLandmark(PoseLandmark.RIGHT_HEEL)
// val leftFootIndex = pose.getPoseLandmark(PoseLandmark.LEFT_FOOT_INDEX)
// val rightFootIndex = pose.getPoseLandmark(PoseLandmark.RIGHT_FOOT_INDEX)
// val nose = pose.getPoseLandmark(PoseLandmark.NOSE)
// val leftEyeInner = pose.getPoseLandmark(PoseLandmark.LEFT_EYE_INNER)
// val leftEye = pose.getPoseLandmark(PoseLandmark.LEFT_EYE)
// val leftEyeOuter = pose.getPoseLandmark(PoseLandmark.LEFT_EYE_OUTER)
// val rightEyeInner = pose.getPoseLandmark(PoseLandmark.RIGHT_EYE_INNER)
// val rightEye = pose.getPoseLandmark(PoseLandmark.RIGHT_EYE)
// val rightEyeOuter = pose.getPoseLandmark(PoseLandmark.RIGHT_EYE_OUTER)
// val leftEar = pose.getPoseLandmark(PoseLandmark.LEFT_EAR)
// val rightEar = pose.getPoseLandmark(PoseLandmark.RIGHT_EAR)
// val leftMouth = pose.getPoseLandmark(PoseLandmark.LEFT_MOUTH)
// val rightMouth = pose.getPoseLandmark(PoseLandmark.RIGHT_MOUTH)
val config = AppDialogConfig(this, R.layout.result_dialog)
config.setOnClickConfirm {
AppDialog.INSTANCE.dismissDialog()
cameraScan.setAnalyzeImage(true)
}.setOnClickCancel {
AppDialog.INSTANCE.dismissDialog()
finish()
}
val imageView = config.getView<ImageView>(R.id.ivDialogContent)
imageView.setImageBitmap(bitmap)
AppDialog.INSTANCE.showDialog(config, false)
}
}