2 votes

ARKit 1.5 : Extraire l'image reconnue

Donc, mon but est :

  • Trouver une image connue
  • Extrayez-le de la sceneView (par exemple, prenez un instantané).
  • Effectuer un traitement supplémentaire

Il a été assez facile de réaliser la première étape en utilisant ARReferenceImage :

guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil) else { return }

let configuration = ARWorldTrackingConfiguration()

configuration.detectionImages = referenceImages

Mais maintenant je n'arrive pas à trouver comment extraire l'image de la SceneView. J'ai le nœud plan ajouté à l'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)
    }
}

Et le résultat : enter image description here

Pour cela, j'ai besoin que le planeNode's projection sur l'écran pour obtenir les coordonnées d'écran 2D du nœud et ensuite couper l'image. J'ai trouvé cette méthode : renderer.projectPoint(node.position) mais ça ne m'a pas aidé. Il peut même renvoyer des valeurs négatives lorsque l'image entière est sur l'écran

Est-ce que je le fais de la bonne manière ? Toute aide serait très appréciée .

0voto

Dans mon cas, je l'ai résolu.

    let transform = node.simdConvertTransform(node.simdTransform, to: node.parent!)

    let x = transform.columns.3.x
    let y = transform.columns.3.y
    let z = transform.columns.3.z

    let position = SCNVector3(x, y, z)
    let projection = renderer.projectPoint(position)

    let screenPoint =  CGPoint(x: CGFloat(projection.x), y: CGFloat( projection.y))

Pour plus d'informations

ARKit 2 - Recadrage de la reconnaissance des images

iOS 8 Core Image : enregistrement d'une section d'une image via Swift

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X