SDK алгоритмов компьютерного зрения для iOS.
SaluteVision Mobile SDK — это набор инструментов для решения задач с использованием компьютерного зрения.
iOS SDK доступен в виде salutevision-mobile.xcframework
.
xcframework
содержит зависимости под все целевые платформы и архитектуры в едином bundle.
Поддерживаемые архитектуры:
- ios-arm64,
- ios-x86_64-simulator,
- ios-arm64-simulator.
Работа с изображениями в iOS SDK осуществляется через класс SaluteVisionImage
.
Чтобы создать экземпляр класса SaluteVisionImage
, передайте данные в конструктор в формате CVPixelBuffer
.
В большинстве случаев CVPixelBuffer
— это стандартная сущность для получения фрейма с камеры телефона на платформе iOS.
Также SaluteVisionImage
поддерживает конвертацию в UIImage
.
Для подключения библиотеки и доступа к моделям SDK используется стандартная команда:
import SaluteVision
Вся функциональность SDK поставляется в виде независимых классов. Например: BarcodeReader
, MRZReader
.
Каждый из классов может быть использован как независимо, так и в сочетании с другими.
- Создаем экземляр класса
private let reader = BarcodeReader(formats: [
.qr,
.aztec
])
- Создаем экземпляр класса
SaluteVisionImage
let pixelBuffer = ... // получить CVPixelBuffer
let image = SaluteVisionImage(pixelBuffer: pixelBuffer)
- Можно использовать прямоугольник с областью интереса (ROI). Это та область изображения, в которой должен находится штрих-код.
let roi: CGRect = ... // получить CGRect, обозначающий область изображения со штрих-кодом
- Запускаем процесс распознавания и обрабатываем результат
// C использованием ROI
guard let results = reader.read(from: image, inside: roi) else {
print("Empty result")
return
}
// Без использования ROI
guard let results = reader.read(from: image) else {
print("Empty result")
return
}
// вывод информации о типе первого распознанного штрих-кода и результат распознования
print("Result did obtain, type: \(results.first?.info?.format.rawValue), result: \(results.first?.info?.text)")
- Создаем экземпляр класса
private let reader = MRZReader()
- Добавляем наблюдателя (observer), который должен реализовывать
MRZReaderObserver
протокол.
reader.registerObserver(self)
- Создаем экземпляр класса
SaluteVisionImage
let pixelBuffer = ... // получить CVPixelBuffer
let image = SaluteVisionImage(pixelBuffer: pixelBuffer)
- Запускаем процесс распознавания и получаем геометрию локализации (синхронно)
let geometries = reader.read(image: image)
- Результат распознования приходит наблюдателю в методе
func infoDidObtain(_ info: MRZInfo)
(асинхронно)
func infoDidObtain(_ info: MRZInfo) {
print("His name is \(info.name) and he is from \(info.country)")
}
- Создаем экземляр класса
private let localization = DocumentLocalization()
- Создаем экземпляр класса
SaluteVisionImage
let pixelBuffer = ... // получить CVPixelBuffer
let image = SaluteVisionImage(pixelBuffer: pixelBuffer)
- Запускаем процесс локализации и обрабатываем результат
let result = localization.predict(image: image, shouldCorrectAR: true)
if result.isStable, let cropImage = result.cropImage {
// Работаем с cropImage
}