У меня проблема с оптическим потоком, если размер кадра был каким-либо образом обработан, что дает мне ошибку. Есть два варианта: либо изменить разрешение видео в начале, либо каким-то образом изменить размер кадра таким образом, чтобы оптический поток работал. Я хочу добавить каскадный объект для обнаружения носа, рта и глаз в дальнейшем развитии, поэтому мне нужно решение, которое будет работать для отдельных регионов без необходимости настройки оптического потока отдельно для тех регионов, особенно в том, что ограничивающая рамка не имеет фиксированного размера, и это будет немного смещаться от кадра к кадру. Вот мой код до сих пор, ошибка в том, что он превышает размеры матрицы.Изменение размера рамки для оптического потока
faceDetector = vision.CascadeObjectDetector();
vidObj = vision.VideoFileReader('MEXTest.mp4','ImageColorSpace','Intensity','VideoOutputDataType','uint8');
converter = vision.ImageDataTypeConverter;
opticalFlow = vision.OpticalFlow('ReferenceFrameDelay', 1);
opticalFlow.OutputValue = 'Horizontal and vertical components in complex form';
shapeInserter = vision.ShapeInserter('Shape','Lines','BorderColor','Custom','CustomBorderColor', 255);
vidPlayer = vision.VideoPlayer('Name','Motion Vector');
while ~isDone(vidObj);
frame = step(vidObj);
fraRes = imresize(frame,0.5);
fbbox = step(faceDetector,fraRes);
I = imcrop(fraRes,fbbox);
im = step(converter,I);
of = step(opticalFlow,im);
lines = videooptflowlines(of, 20);
if ~isempty(lines)
out = step(shapeInserter,im,lines);
step(vidPlayer,out);
end
end
release(vidPlayer);
release(VidObj);
Объект 'vision.opticalFlow' System будет удален в следующей версии. http://se.mathworks.com/help/vision/ref/opticalflow-class.html Альтернативы больше нравятся мне. Тем не менее, вы должны вычислить поток из decimated 'fraRes', а затем обрезать поток (' of'). Но, возможно, вы хотите указать точную строку ошибки. Я просто догадываюсь. – mainactual
Альтернативы будут работать так же, как и реализованный метод, а именно эксперимент с ними, когда я смогу обрезать лицо и применить к нему оптический поток. Я мог бы это сделать, однако оптический поток будет быстрее вычисляться на меньшем изображении, и я думаю, что это было бы более точно, чем делать это на полном видео, где меня интересуют только области лица. – UZIERSKI