gpt4 book ai didi

ios - 无法使用 Firebase 的 MLKit 从图像中检测条形码

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:42 25 4
gpt4 key购买 nike

因此,我正在尝试使用 MLKit 扫描条码,但是 self.barcodeDetector?.detect 的完成 block 中的条码变量中没有条码。

UIImage(命名为:“barcode.jpg”)存在并正确加载(并且有条形码)。

那么我做错了什么/我错过了什么?

private var barcodeDetector: VisionBarcodeDetector?
private lazy var vision = Vision.vision()

override func viewDidLoad() {
super.viewDidLoad()

guard let barcodeImage = self.imageView.image else { return }

let format = VisionBarcodeFormat.all
let barcodeOptions = VisionBarcodeDetectorOptions(formats: format)
let barcodeDetector = self.vision.barcodeDetector(options: barcodeOptions)

let imageMetadata = VisionImageMetadata()
imageMetadata.orientation = UIUtilities.visionImageOrientation(from: barcodeImage.imageOrientation)

let visionImage = VisionImage(image: barcodeImage)
visionImage.metadata = imageMetadata

self.textView.text = ""

barcodeDetector.detect(in: visionImage) { (barcodes, error) in
guard error == nil, let barcodes = barcodes, !barcodes.isEmpty else {
let errorString = error?.localizedDescription ?? "No error description available"
self.textView.text = "On-Device barcode detection failed with error: \(errorString)"
return
}

self.textView.text = self.textView.text + "\(self.dateFormatter.string(from: Date())) detecting ...\n"
self.textView.text = self.textView.text + "barcodes.count = \(barcodes.count)" + "\n"
print(barcodes.count)

for barcode in barcodes {
self.textView.text = self.textView.text + "\(barcode)" + "\n"
print(barcode)
}
}

所以问题是条形码 var 是空的,所以没有到达 for 循环中的代码...:

        for barcode in barcodes! {
print(barcode.rawValue!)
}

附言错误变量 = nil,所以这不是问题。

使用的图像: enter image description here

最佳答案

您很可能错过了图像的“方向”。

// Define the metadata for the image.
let imageMetadata = VisionImageMetadata()
imageMetadata.orientation = UIUtilities.visionImageOrientation(from: image.imageOrientation)

// Initialize a VisionImage object with the given UIImage.
let visionImage = VisionImage(image: image)
visionImage.metadata = imageMetadata

如果还不能解决,尝试将条码格式设置为“全部”

let format = VisionBarcodeFormat.all
let barcodeOptions = VisionBarcodeDetectorOptions(formats: format)
// Create a barcode detector.
let barcodeDetector = vision.barcodeDetector(options: barcodeOptions)

关于ios - 无法使用 Firebase 的 MLKit 从图像中检测条形码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51764963/

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