gpt4 book ai didi

swift - MLVision 不正确的旋转

转载 作者:行者123 更新时间:2023-11-28 14:11:29 26 4
gpt4 key购买 nike

尝试在纵向模式下使用 MLVision,但是在我以纵向模式拍照后,由于旋转不正确,它只会输出几个字符。图片必须在横向拍摄,否则无法识别文字。试图查看 Firebase 提供的示例,在该示例中,当这种情况发生在风景中并在肖像中工作时,我遇到了完全相反的问题,但是无法找到除了我试图更改的元数据之外可以确定图像方向的设置但没有任何成功。

 var vision: Vision?

override func viewDidLoad() {
super.viewDidLoad()
vision = Vision.vision()

}


func recognize(Image: VisionImage){
let textRecognizer = vision?.onDeviceTextRecognizer()
textRecognizer?.process(Image) { result, error in
guard error == nil, let result = result else {
// ...
return
}
print(result.text)

// Recognized text
}
}
@IBAction func scanDocument(_ sender: Any) {
let vc = UIImagePickerController()
vc.sourceType = .camera
vc.allowsEditing = false
vc.delegate = self
present(vc, animated: true)

}


func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

picker.dismiss(animated: true, completion: nil)
guard let selectedImage = info[.originalImage] as? UIImage else {
fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
}
recognize(Image: VisionImage(image: selectedImage))

}

最佳答案

要引导识别器,您应该 supply the the orientation你的形象

// 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

这是一个helper method从您的图像中找到正确的方向

public static func imageOrientation(fromDevicePosition devicePosition: AVCaptureDevice.Position = .back
) -> UIImageOrientation {
var deviceOrientation = UIDevice.current.orientation
if deviceOrientation == .faceDown || deviceOrientation == .faceUp ||
deviceOrientation == .unknown {
deviceOrientation = currentUIOrientation()
}
switch deviceOrientation {
case .portrait:
return devicePosition == .front ? .leftMirrored : .right
case .landscapeLeft:
return devicePosition == .front ? .downMirrored : .up
case .portraitUpsideDown:
return devicePosition == .front ? .rightMirrored : .left
case .landscapeRight:
return devicePosition == .front ? .upMirrored : .down
case .faceDown, .faceUp, .unknown:
return .up
}
}

关于swift - MLVision 不正确的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489129/

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