Как я могу использовать API отслеживания объектов платформы Vision на ios11?

// init bounding
CGRect rect = CGRectMake(0, 0, 0.3, 0.3);
VNSequenceRequestHandler* reqImages = [[VNSequenceRequestHandler alloc] init];
VNRectangleObservation* ObserveRect = [VNRectangleObservation observationWithBoundingBox:rect];
VNTrackRectangleRequest* reqRect = [[VNTrackRectangleRequest alloc] initWithRectangleObservation:ObserveRect];
NSArray<VNRequest *>* requests = [NSArray arrayWithObjects:reqRect, nil];
BOOL bsucc = [reqImages performRequests:requests onCGImage:img.CGImage error:&error];

// get tracking bounding
VNDetectRectanglesRequest* reqRectTrack = [VNDetectRectanglesRequest new];
NSArray<VNRequest *>* requestsTrack = [NSArray arrayWithObjects:reqRectTrack, nil];
[reqImages performRequests:requestsTrack onCGImage:img.CGImage error:&error];

VNRectangleObservation* Observe = [reqRectTrack.results firstObject];
CGRect boundingBox = Observe.boundingBox;

Почему значение boundingBox неверно?

Как найти демоверсию vision.framework для ios11?


person Alberl    schedule 08.06.2017    source источник
comment
Я столкнулся с той же проблемой, что и вы, я нашел пример, использованный в Vision Keynote, они меняют размер boundingBox значений. Но не работает на моей стороне. Вот пример: developer.apple.com/sample-code/wwdc / 2017 / Сообщите мне, если найдете решение   -  person Akhu    schedule 09.06.2017
comment
Я также нахожу демонстрацию в Keynote , '// Создаем обработчик запросов let requestHandler = VNSequenceRequestHandler () // Начинаем отслеживание с наблюдения let monitoring = detectRequest.results as! [VNDetectedObjectObservation] let objectsToTrack = monitoring.map {VNTrackObjectRequest (detectObjectObservation: $ 0)} // Запускаем запросы requestHandler.perform (objectsToTrack, on: pixelBuffer) // Давайте посмотрим на результаты запроса в objectsToTrack для наблюдения в request.results как ! [VNDetectedObjectObservation] ', но он не работает.   -  person Alberl    schedule 12.06.2017
comment
@Alberl У вас есть какое-либо решение для обнаружения объекта по статическому изображению, я столкнулся с проблемой преобразования точек из одной системы координат в другую.   -  person The iCoder    schedule 20.09.2017


Ответы (2)


Вот мой простой пример использования фреймворка Vision: https://github.com/artemnovichkov/iOS-11-by-Examples. Думаю, у вас проблема с разными системами координат. Обратите внимание на преобразование прямоугольников:

cameraLayer.metadataOutputRectConverted(fromLayerRect: originalRect)

а также

cameraLayer.layerRectConverted(fromMetadataOutputRect: transformedRect)

person Artem Novichkov    schedule 20.06.2017
comment
Спасибо, Артем, молодец! :) - person kxko; 02.07.2017
comment
Можно ли обнаружить объект на изображении и отследить его в другом наборе изображений? - person The iCoder; 20.09.2017
comment
К сожалению нет. - person Artem Novichkov; 20.09.2017
comment
@ArtemNovichkov Спасибо за ответ. Другим способом мы можем реализовать локальное видео, так как я не могу найти метод преобразования интересующего прямоугольника в конкретное координатное пространство. - person The iCoder; 21.09.2017
comment
@TheiCoder Вы найдете какие-нибудь примеры отслеживания объектов на локальных видео? - person srjohnhuang; 18.07.2018
comment
@srjohnhuang Нет, но я использовал библиотеку dlib для обнаружения объектов по изображению. Вы можете попробовать использовать dlib для видео. - person The iCoder; 18.07.2018

Vision Framework отслеживает объект, демонстрацию для этого можно найти по этой ссылке:

https://github.com/jeffreybergier/Blog-Getting-Started-with-Vision  Изображение предоставлено: Джеффри Бергье

Blogger подробно рассказывает о том, как заставить демо работать, и имеет гифку, показывающую работающую сборку.

Надеюсь, это то, что вам нужно.

person Luke James Stephens    schedule 19.06.2017
comment
Спасибо, Люк, ты молодец! :) - person kxko; 02.07.2017