【问题标题】:Live Rectangle detection using Vision Framework使用 Vision Framework 进行实时矩形检测
【发布时间】:2021-10-21 23:08:57
【问题描述】:

我正在尝试从实时预览层检测矩形,但无法检测到所有矩形。

我在做什么

设置视觉请求

 func setupVision() {
    let rectanglesDetectionRequest = VNDetectRectanglesRequest(completionHandler: self.handleRectangles)
    rectanglesDetectionRequest.maximumObservations = 0
    rectanglesDetectionRequest.quadratureTolerance = 45.0
    rectanglesDetectionRequest.minimumAspectRatio = 0.64
    self.requests = [rectanglesDetectionRequest]
}

    
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
        return
    }
    
    let exifOrientation = self.exifOrientationFromDeviceOrientation()
    
    
    DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
        var requestOptions: [VNImageOption : Any] = [:]
        
        if let cameraIntrinsicData = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil) {
            requestOptions = [.cameraIntrinsics: cameraIntrinsicData]
        }
        
        DispatchQueue.global(qos: .background).async {
            let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation:exifOrientation, options: requestOptions)
            do {
                try imageRequestHandler.perform(self.requests)
            } catch {
                print(error)
            }
        }
        

    }
    

    var arr = Array<VNTrackRectangleRequest>()
    for obs in self.rectanglesss{
            let trackRequest = VNTrackRectangleRequest(rectangleObservation: obs, completionHandler: self.handleSequenceRequestUpdate)
            trackRequest.trackingLevel = .accurate
            arr.append(trackRequest)
    }
    
    
    do {
        try self.sequenceHandler.perform(arr, on: pixelBuffer, orientation: exifOrientation)
    } catch {
        print(error)
    }
}

有人可以帮我弄清楚我做错了什么吗? 当我尝试使用直角时,有时它会检测到其中的几个,而锐角只能检测到 2-3 个矩形附近。在这里我尝试使用 SET 卡,我添加了 2 张我得到的图像。

结果

【问题讨论】:

    标签: ios swift camera rectangles vision


    【解决方案1】:

    尝试 iphone 通过鸟瞰图查看它们?并得到一个非白色的不同表

    【讨论】:

      【解决方案2】:

      我建议你把手机平放,然后设置minimumConfidence

      【讨论】:

        【解决方案3】:

        使用这个...

        https://developer.apple.com/documentation/vision/vndetectrectanglesrequest/2875373-maximumobservations

        let request = VNDetectRectanglesRequest { (request, error) in
            // Your completion handler code
        }
        
        request.maximumObservations = 2
        

        【讨论】:

          猜你喜欢
          • 2017-11-15
          • 1970-01-01
          • 2010-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-09
          相关资源
          最近更新 更多