首页 > 解决方案 > 检测矩形时崩溃,Swift,iOS

问题描述

我正在尝试用视觉检测矩形。每隔一段时间,我就会因为这种解释而崩溃。

断言失败:(maxDev != -1.f),函数 straightLineWLSQ,文件 /BuildRoot/Library/Caches/com.apple.xbs/Sources/Vision/Vision-1.5.3/RectangleDetector/QuadDetect/Leq.c,第 217 行.

这是崩溃的功能。

func performVisionRequest(image: CGImage, orientation: CGImagePropertyOrientation) {


    DispatchQueue.global(qos: .userInitiated).async {
        do {

            let imageRequestHandler = VNImageRequestHandler(cgImage: image, orientation: orientation, options: [:])
            // This is where I get the error.
            try imageRequestHandler.perform(
                [VNDetectRectanglesRequest(completionHandler:{ req, err in
                    self.rectanglesRequest(request:req, error:err)

                })]
            )
        } catch let error as NSError {
            self.sliceCompletion(UIImage())
            print("Failed to perform vision request: \(error)")

        }
    }
}

标签: iosswiftrectangles

解决方案


我的项目也面临同样的问题,并通过跳过一些图像(如 ImageWidth 太高于 ImageHeight 和 ImageHeight 太高于 ImageWidth)来解决。

当我们尝试检测某些图像的矩形时会发生崩溃,例如(ImageWidth:1240,ImageHeight:121 ) 或(ImageWidth:121,ImageHeight:1240)

func performVisionRequest(image: CGImage, orientation: CGImagePropertyOrientation) {


       let ratioW = image.width / image.height
       let ratioH = image.height / image.width

       if(ratio < 7) //To skip crash image
       {
           DispatchQueue.global(qos: .userInitiated).async {

             do {

                   let imageRequestHandler = VNImageRequestHandler(cgImage: image, orientation: orientation, options: [:])
            // This is where I get the error.
                   try imageRequestHandler.perform(
                [VNDetectRectanglesRequest(completionHandler:{ req, err in
                    self.rectanglesRequest(request:req, error:err)

                })]
            )
        } catch let error as NSError {
            self.sliceCompletion(UIImage())
            print("Failed to perform vision request: \(error)")

        }
    }
  }
}

推荐阅读