【发布时间】:2021-03-15 08:48:08
【问题描述】:
我无法摆脱使用 Core ML 图像识别的程序中的错误!
我的代码基本上是调试过的,可以处理大量文件,但是在421文件上出现EXC_BAD_ACCESS错误(我更改了处理文件的顺序以消除文件损坏的问题) 我已经将所有潜在危险的对象转换为单例以避免泄漏,调试和整理 sqlite 数据库,使用推荐的 generateCGImagesAsynchronously 运算符重写代码以从视频文件中获取图片,一切都已清理干净并且没有泄漏,但是错误仍然发生 直接提取文本对象的代码取自网络,稍微升级一下,会不会有问题?,求助!
CreateAltModel3.shared.handler = VNImageRequestHandler(ciImage: inputImage!)
CreateAltModel3.shared.request = VNCoreMLRequest(model: CreateAltModel3.shared.visionModel!) { [weak self] req3, error in
output_handler(req3.results) }
do {try CreateAltModel3.shared.handler!.perform([CreateAltModel3.shared.request!])} catch {print ("hadler3 error - request3")}
这是 output_handler 函数的代码
func output_handler(_ results: [Any]?) {
guard let results = results as? [VNClassificationObservation]
else {return}
for class1 in results {
if (class1.confidence > 0.05) { // Only show greater than 5%
let fileID = filesArray[currentFileIndex]?.index
if percentRecogn <= Int(round(class1.confidence*100)) {
findKeyStr = (class1.identifier + " " + String(round(class1.confidence*100)) + "%")
resultKeyStr.0 = Int64(fr)
let comma = (resultKeyStr.1 == "") ? "" : ", "
let cutDubbing = (resultKeyStr.1 == class1.identifier) ? resultKeyStr.1 : resultKeyStr.1 + comma + class1.identifier
resultKeyStr.1 = cutDubbing
resultKeyStr.2 = Int64(fileID!)
}
}
}
}
但我理解的错误是在退出此功能后发生的
更多的代码传播没有意义,因为我只会用额外的信息混淆你,我只会补充一点,这段代码在全局流中循环工作,并按预期将信息输出到主流中的标签和 ImageView ,一切似乎都已调试,但我无法理解错误的性质,可能与流有关,但甚至不知道在哪里挖掘)
【问题讨论】:
标签: swift thread-safety coreml