gpt4 book ai didi

ios - 应用滤镜后无法将图像识别为UIImage

转载 作者:行者123 更新时间:2023-12-01 16:06:36 30 4
gpt4 key购买 nike

我正在尝试实现一种能够处理脏的或略微模糊的条形码的条形码扫描仪。我们已通过在相机输入图像上应用滤镜以对其进行锐化,然后使用GoogleML扫描生成的图像,在Android应用程序中成功实现了此功能。不幸的是,在iOS中,我们遇到了许多问题。

通过设备相机获取图像后,我试图在图像上运行锐化滤镜,如下所示:

if let inputImage = CIImage(image: image) {
let sharpFilter = CIFilter(name: "CIUnsharpMask")!
sharpFilter.setValue(inputImage, forKey: kCIInputImageKey)
sharpFilter.setValue(2.0, forKey: "inputIntensity")
sharpFilter.setValue(1.0, forKey: "inputRadius")
let outputImage = sharpFilter.outputImage!
let outputUIImage = UIImage(ciImage: outputImage)
self.detectBarcodes(image: outputUIImage)
}

我的 detectBarcodes函数将经过锐化的UIImage用作参数。在该方法内部,我正在创建VisionImage的实例。 VisionImage构造函数如下:
VisionImage(image: UIImage)

在我的detectBarcodes函数中,我正在创建VisionImage的实例,如下所示:
func detectBarcodes(image: UIImage?) {

guard let image = image else { return }
let format = VisionBarcodeFormat.all
let barcodeOptions = VisionBarcodeDetectorOptions(formats: format)
let barcodeDetector = vision.barcodeDetector(options: barcodeOptions)
let imageMetadata = VisionImageMetadata()
imageMetadata.orientation = UIUtilities.visionImageOrientation(from: image.imageOrientation)

let visionImage = VisionImage(image: image) // crashes here
visionImage.metadata = imageMetadata

//...

}

我已经验证了传递到构造函数中的图像是有效的UIImage,但是,对VisionImage构造函数的调用失败,并显示以下日志:
Terminating app due to uncaught exception 'FIRInvalidImage', reason: 'Invalid image. UIImage.CGImage must not be NULL.'

奇怪的是,仅当图像已经由锐化滤镜处理后,才会发生此错误。如果我在运行SharpenFilter之前将图像传递给detectBarcodes函数,则VisionImage构造函数将成功执行,但是图像太模糊而无法进行扫描。

任何人都可以分享发生这种情况的原因的任何信息吗?还是有人对扫描模糊的条形码有更好的建议(当客户不会为可靠的第三方库付款时)?

谢谢!

最佳答案

似乎VisionImage中的某些代码想要使用CGImage图像数据,但是cgImage属性的文档指出:

如果使用CIImage对象初始化了UIImage对象,则该属性的值为NULL。

就您而言,这正是发生的情况,因为UIImage是根据Core Image过滤器结果创建的。

您可以使用this question中建议的技术来创建所需的CGImage

关于ios - 应用滤镜后无法将图像识别为UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58926331/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com