姿态坐标点对象
This commit is contained in:
parent
3253b6bcac
commit
3a58f83928
|
@ -0,0 +1,70 @@
|
||||||
|
package top.rrricardo.motioncapture.models
|
||||||
|
|
||||||
|
import com.google.mediapipe.formats.proto.LandmarkProto.NormalizedLandmarkList
|
||||||
|
import java.nio.ByteBuffer
|
||||||
|
|
||||||
|
class PoseLandmark(
|
||||||
|
private val Type: Int,
|
||||||
|
private val X: Float,
|
||||||
|
private val Y: Float,
|
||||||
|
private val Z: Float,
|
||||||
|
private val Visibility: Float,
|
||||||
|
private val TimeStamp: Long) {
|
||||||
|
private val tolerance = 10E-6;
|
||||||
|
|
||||||
|
private val packetLength = 28;
|
||||||
|
|
||||||
|
fun toByteArray(): ByteArray {
|
||||||
|
val result = ByteBuffer.allocate(packetLength)
|
||||||
|
|
||||||
|
result.putInt(Type)
|
||||||
|
result.putFloat(X)
|
||||||
|
result.putFloat(Y)
|
||||||
|
result.putFloat(Z)
|
||||||
|
result.putFloat(Visibility)
|
||||||
|
result.putLong(TimeStamp)
|
||||||
|
|
||||||
|
return result.array()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun valueOf(data: ByteArray): PoseLandmark {
|
||||||
|
val buffer = ByteBuffer.wrap(data)
|
||||||
|
|
||||||
|
val type = buffer.int
|
||||||
|
val x = buffer.float
|
||||||
|
val y = buffer.float
|
||||||
|
val z = buffer.float
|
||||||
|
val visibility = buffer.float
|
||||||
|
val timeStamp = buffer.long
|
||||||
|
|
||||||
|
return PoseLandmark(type, x, y, z, visibility, timeStamp)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun valueOf(poseLandmarks: NormalizedLandmarkList, timeStamp: Long): Collection<PoseLandmark> {
|
||||||
|
val result = mutableSetOf<PoseLandmark>()
|
||||||
|
|
||||||
|
for ((landmarkIndex, landmark) in poseLandmarks.landmarkList.withIndex()) {
|
||||||
|
val poseLandmark = PoseLandmark(
|
||||||
|
landmarkIndex,
|
||||||
|
landmark.x,
|
||||||
|
landmark.y,
|
||||||
|
landmark.z,
|
||||||
|
landmark.visibility,
|
||||||
|
timeStamp
|
||||||
|
)
|
||||||
|
|
||||||
|
result.add(poseLandmark)
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
val builder = StringBuilder()
|
||||||
|
|
||||||
|
builder.append("Time: $TimeStamp, Type: $Type\n")
|
||||||
|
builder.append("\tX:$X, Y:$Y, Z:$Z, Visibility: $Visibility\n")
|
||||||
|
|
||||||
|
return builder.toString()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user