Как сделать так, чтобы код ниже обнаруживал частично прозрачные изображения? - PullRequest
0 голосов
/ 05 июня 2019

Я создаю приложение с дополненной реальностью, которое обнаруживает объекты и над ними появляется всплывающая метка.Я пытаюсь заставить программу распознавать окно, однако, поскольку внешняя среда постоянно меняется, изображение, загруженное в Assets.xcassets, никогда не будет определяться правильно.Итак, я сделал оконную часть окна прозрачной.По сути, я хочу, чтобы камера обнаруживала все, кроме оконного стекла (оконное стекло, часть стены, фон и т. Д.).Я не уверен, как на самом деле это сделать и как это реализовать.

Концептуально я подумал, что смогу каким-то образом заставить программу распознавать прозрачные части окна и игнорировать их.Таким образом, при сравнении изображения, введенного в Assets.xcassets и фактического окна, программа игнорирует оконное стекло и просто обнаруживает все остальное на изображении.

import UIKit
import ARKit

class ViewController: UIViewController {

    /// Primary SceneKit view that renders the AR session
    @IBOutlet var sceneView: ARSCNView!

    /// A serial queue for thread safety when modifying SceneKit's scene graph.
    let updateQueue = DispatchQueue(label: "\(Bundle.main.bundleIdentifier!).serialSCNQueue")

    // MARK: - Lifecycle

    // Called after the controller's view is loaded into memory.
    override func viewDidLoad() {
        super.viewDidLoad()

        // Set the view's delegate
        sceneView.delegate = self

        // Show statistics such as FPS and timing information (useful during development)
        sceneView.showsStatistics = true

        // Enable environment-based lighting
        sceneView.autoenablesDefaultLighting = true
        sceneView.automaticallyUpdatesLighting = true
    }

    // Notifies the view controller that its view is about to be added to a view hierarchy.
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        guard let refImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: Bundle.main) else {
                fatalError("Missing expected asset catalog resources.")
        }

        // Create a session configuration
        let configuration = ARImageTrackingConfiguration()
        configuration.trackingImages = refImages
        configuration.maximumNumberOfTrackedImages = 1

        // Run the view's session
        sceneView.session.run(configuration, options: ARSession.RunOptions(arrayLiteral: [.resetTracking, .removeExistingAnchors]))
    }

    // Notifies the view controller that its view is about to be removed from a view hierarchy.
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        // Pause the view's session
        sceneView.session.pause()
    }

}

Я хотел бы иметь возможностьиметь изображения окон, которые можно обнаружить.

...