ARKit 1.5:提取已识别的图像

时间:2018-06-15 08:41:23

标签: ios swift arkit image-recognition

所以,我的目标是:

  • 查找已知图片
  • 从sceneView中提取它(例如拍摄快照)
  • 执行进一步处理

使用 ARReferenceImage

完成第一步非常容易
guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil) else { return }

let configuration = ARWorldTrackingConfiguration()

configuration.detectionImages = referenceImages

但现在我无法弄清楚如何从SceneView中提取图像。我将平面节点添加到imageAnchor:

    func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    DispatchQueue.main.async { [unowned self] in
        guard let imageAnchor = anchor as? ARImageAnchor
            else { return }

        let planeNode = self.getPlaneNode(withReferenceImage: imageAnchor.referenceImage)
        planeNode.opacity = 0.5
        planeNode.eulerAngles.x = -.pi / 2
        node.addChildNode(planeNode)
    }
}

结果: enter image description here

因此,我需要在屏幕上使用planeNode的投影来获取节点的2D屏幕坐标,然后剪切图像。我找到了这种方法:renderer.projectPoint(node.position)但它并没有帮助我。当整个画面出现在屏幕上时,它甚至可以返回负值。

我这样做的方法是否正确?任何帮助将非常感激

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

digraph {
  subgraph cluster_a {
    label = a
    subgraph cluster_b {
        label = b
        node_1 [label=c]
        node_2 [label=d]
    }
    subgraph cluster_B {
        label = B
        node_3 [label=C]
    }
  }
  subgraph cluster_A {
      label = A
      subgraph cluster_B {
          label = B
          node_4 [label=C]
      }
  }
}

更多信息

ARKit 2 - Crop Recognizing Images

iOS 8 Core Image saving a section of an Image via Swift

https://nacho4d-nacho4d.blogspot.com/2012/03/coreimage-and-uikit-coordinates.html