是否可以使用 CoreML 模型检测对象并找到该对象的测量值?
Is it possible to detect object using CoreML model and find measurement of that object?
我想使用 CoreML 和 ARKit 检测门等对象类别,window 我想找到门的测量值(如高度、宽度和面积)。
如何检测物体并在该物体上添加一些叠加形状,以便找到该物体的真实世界位置和测量值?
为该任务使用 ARKit 的内置对象检测算法。简单又强大。
借助 ARKit 的 object detection,您可以检测到您的门(初步扫描或在智能手机上拍摄)。
以下代码可帮助您检测现实世界中的对象(如门)并将 3D 对象或 3D 文本放置在 ARObjectAnchor
位置:
import ARKit
extension ViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor) {
if let _ = anchor as? ARObjectAnchor {
let text = SCNText(string: "SIZE OF THIS OBJECT IS...",
extrusionDepth: 0.05)
text.flatness = 0.5
text.font = UIFont.boldSystemFont(ofSize: 10)
let textNode = SCNNode(geometry: text)
textNode.geometry?.firstMaterial?.diffuse.contents = UIColor.white
textNode.scale = SCNVector3(0.01, 0.01, 0.01)
node.addChildNode(textNode)
}
}
}
并提供一个 Xcode 的文件夹 Resources
,其中包含您现实生活中物体的图像。
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView!
let configuration = ARWorldTrackingConfiguration()
override func viewDidLoad() {
super.viewDidLoad()
sceneView.debugOptions = .showFeaturePoints
sceneView.delegate = self
guard let dObj = ARReferenceObject.referenceObjects(inGroupNamed: "Resources",
bundle: nil)
else {
fatalError("There's no reference image")
return
}
configuration.detectionObjects = dObj
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
}
我想使用 CoreML 和 ARKit 检测门等对象类别,window 我想找到门的测量值(如高度、宽度和面积)。
如何检测物体并在该物体上添加一些叠加形状,以便找到该物体的真实世界位置和测量值?
为该任务使用 ARKit 的内置对象检测算法。简单又强大。
借助 ARKit 的 object detection,您可以检测到您的门(初步扫描或在智能手机上拍摄)。
以下代码可帮助您检测现实世界中的对象(如门)并将 3D 对象或 3D 文本放置在 ARObjectAnchor
位置:
import ARKit
extension ViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor) {
if let _ = anchor as? ARObjectAnchor {
let text = SCNText(string: "SIZE OF THIS OBJECT IS...",
extrusionDepth: 0.05)
text.flatness = 0.5
text.font = UIFont.boldSystemFont(ofSize: 10)
let textNode = SCNNode(geometry: text)
textNode.geometry?.firstMaterial?.diffuse.contents = UIColor.white
textNode.scale = SCNVector3(0.01, 0.01, 0.01)
node.addChildNode(textNode)
}
}
}
并提供一个 Xcode 的文件夹 Resources
,其中包含您现实生活中物体的图像。
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView!
let configuration = ARWorldTrackingConfiguration()
override func viewDidLoad() {
super.viewDidLoad()
sceneView.debugOptions = .showFeaturePoints
sceneView.delegate = self
guard let dObj = ARReferenceObject.referenceObjects(inGroupNamed: "Resources",
bundle: nil)
else {
fatalError("There's no reference image")
return
}
configuration.detectionObjects = dObj
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
}