

Он содержит тот же номер: 01069327.
Единственная разница в том, что второй номер перевернут по горизонтали.
Мне нужно распознать переворот, потому что для моей области продукты разные.
Я пробовал использовать и Vision, и AVFoundation< /code> без результатов.
Код: Выделить всё
Vision
Использование AVFoundation:
Код: Выделить всё
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if let metadataObject = metadataObjects.first {
guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
guard let stringValue = readableObject.stringValue else { return }
let topLeft = readableObject.corners[0]
let topRight = readableObject.corners[1]
let bottomRight = readableObject.corners[2]
let bottomLeft = readableObject.corners[3]
let diffXRight = topRight.x - bottomRight.x
let diffXLeft = topLeft.x - bottomLeft.x
let flipThresholdX: CGFloat = 0.01
let isFlippedHorizontally = abs(diffXRight) > flipThresholdX || abs(diffXLeft) > flipThresholdX
print("BARCODE: \(stringValue), flipped: \(isFlippedHorizontally ? 0 : 1)\n\n")
self.parent.didFindCode(stringValue, isFlippedHorizontally ? 0 : 1)
}
}
Код: Выделить всё
private func createRequest() -> VNDetectBarcodesRequest {
let request = VNDetectBarcodesRequest { request, error in
[...]
if let stringValue = observation.payloadStringValue {
let topLeft = observation.topLeft
let topRight = observation.topRight
let bottomLeft = observation.bottomLeft
let angle = atan2(topRight.y - topLeft.y, topRight.x - topLeft.x) * 180.0 / .pi
let rotationThreshold: Float = 180.0
let isFlippedHorizontally = angle > rotationThreshold || angle < -rotationThreshold
print("BARCODE: \(stringValue), flipped: \(isFlippedHorizontally ? 0 : 1)")
self.parent.didFindCode(stringValue, isFlippedHorizontally ? 0 : 1)
}
}
return request
}
Кажется, это действительная и легко извлекаемая информация. Этот сайт https://online-barcode-reader.inliteresearch.com, как вы можете видеть на скриншотах, определяет правильное «поворот»:

[img]https://i. stack.imgur.com/xDjrH.png[/img]
Есть ли способ получить или извлечь эту информацию?
Также можно использовать внешние (но бесплатные) библиотеки.
Источник: https://stackoverflow.com/questions/776 ... -or-vision