如何解决如何将 MLKit Vision3DPoint 转换为 UV 坐标 目标详情地标位置示例预期结果代码
目标
- 转换 MLKit Vision3DPoint 到 UV坐标或AVFoundation坐标
详情
我尝试通过遵循 these steps 来使用 Google 的 MLKit 来检测人体姿势,但结果是在 3D 空间中
地标位置示例
Position: x: 1175.290893554688,y: -3.273239135742188,z: 2.268885850906372
Position: x: 1283.07568359375,y: 18.44030952453613,z: -266.7630615234375
Position: x: 4367.9072265625,y: 687.6997680664062,z: -358.7154846191406
Position: x: 3602.029052734375,y: 621.983642578125,z: -1123.94580078125
...
但我想要的答案是图像上的每个点(UV坐标)?
预期结果
// Example
UV: u: 0.1,v: 0.2,Screen: x: 100,y: 200
...
代码
func captureOutput(_ output: AVCaptureOutput,didOutput sampleBuffer: CMSampleBuffer,from connection: AVCaptureConnection) {
// Prepare Input
let image = VisionImage(buffer: sampleBuffer)
image.orientation = imageOrientation(deviceOrientation: UIDevice.current.orientation,cameraPosition: camera.position)
// To detect objects asynchronously
poseDetector.process(image) { [uNowned self] (detectedPoses,error) in
guard error == nil else { return }
guard let detectedPoses = detectedPoses,!detectedPoses.isEmpty else { return }
// Success. Get pose landmarks here.
for pose in detectedPoses {
let landmarks = pose.landmarks
for landmark in landmarks {
// This will return a 3D point
// Example: x: 1175.290893554688,z: 2.268885850906372
let position = landmark.position
// pointView.points needs 2D Point (UV Coordinate)
// Example: x: 0.12,y: 0.78 (u,v)
owner.pointView.points.append((CGPoint(x: position.x,y: position.y),UIColor.red))
}
}
owner.pointView.setNeedsdisplay()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。