ios - 检测矩形时崩溃,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)")
}
}
}
解决方案
我的项目也面临同样的问题,并通过跳过一些图像(如 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)")
}
}
}
}
推荐阅读
- c# - else 条件在 reader hasrows 为 false 时不起作用
- html - 如何减小 CSS 卡片显示中图像的大小
- r - 提高 R 中 data.table 中两列的粘贴速度(可重现)
- php - php 计算器 - Switch 语句问题
- spring-boot - Togglz 不从 application.yml 获取 Spring-Boot 配置
- webpack - webpack 开发服务器未构建和重新加载 index.html
- java - Spring Boot 电子邮件发送抛出 SocketTimeoutException: Read timed out
- node.js - 如何使用 Bale bot 向群组发送消息?
- angular - ngFor 内部的数据绑定
- jquery - 使用 jQuery 删除元素后,AngularJS 观察者仍然触发?