Я хочу обнаружить некоторые шаблоны треугольника с помощью ввода с iPhone. Я нашел пример кода, который может обнаружить QR/штрих-код с помощью AVFoundation. Основная часть - это класс AVMetadataMachineReadableCodeObject. Вот некоторые примеры кода из AppCoda:Как определить индивидуальный детектор для IOS AVFoundation?
func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
// Check if the metadataObjects array is not nil and it contains at least one object.
if metadataObjects == nil || metadataObjects.count == 0 {
qrCodeFrameView?.frame = CGRectZero
messageLabel.text = "No barcode/QR code is detected"
return
}
// Get the metadata object.
let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject
// Here we use filter method to check if the type of metadataObj is supported
// Instead of hardcoding the AVMetadataObjectTypeQRCode, we check if the type
// can be found in the array of supported bar codes.
if supportedBarCodes.contains(metadataObj.type) {
// if metadataObj.type == AVMetadataObjectTypeQRCode {
// If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds
let barCodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadataObj)
qrCodeFrameView?.frame = barCodeObject!.bounds
if metadataObj.stringValue != nil {
messageLabel.text = metadataObj.stringValue
}
}
В приведенном выше коде, как только QR-код обнаружен, граничная коробка будет нарисована и текстовое поле будет обновляться. Аналогично, класс AVMetadataFaceObject используется в приложениях обнаружения лиц. Я видел из ссылки, что оба класса являются подклассами AVMetadataObject.
Мне интересно, можно ли настроить детектор треугольников, написав подкласс AVMetadataObject, скажем, мы вызываем подкласс AVMetadataTriangleObject. (У меня есть доступный алгоритм обнаружения и есть код, написанный в Matlab. Транскрипция его в swift не должна быть жесткой.) Если такой подход невозможен, может ли кто-нибудь предложить альтернативный путь для достижения вышеуказанной цели?
Большое вам спасибо!
Спасибо, Ритмичный за быстрый ответ. Теперь я рассмотрю 'CMSampleBuffer'. – waterworld