Извлеките точки, которые генерируют векторы x и y в видео.

Этот код является примером набора инструментов Computer Vision System Toolbox, который генерирует векторы движения оптического потока. Любопытно, как извлечь из каждого видеокадра массив [x, y] с координатными точками, из которых состоят эти векторы.

videoReader=vision.VideoFileReader('videoname','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);
VideoPlayer = vision.VideoPlayer('Name','Motion Vector');

videoInfo    = info(videoReader);
videoPlayer  = vision.VideoPlayer('Position',...
[100 100 videoInfo.VideoSize(1:2)+30]);

while ~isDone(videoReader)
frame = step(videoReader);
im = step(converter, frame);
of = step(opticalFlow, im);
lines = videooptflowlines(of, 20);
if ~isempty(lines)
   out = step(shapeInserter, im, lines);
    step(videoPlayer, out);
end
end

release(videoPlayer);
release(videoReader);

Итак, погуглил строки videooptflowlines = function(f, 20); генерирует координаты точек линий оптического потока. Я попытался поместить «строки» в командное окно, ожидая, пока я верну массив с этими данными, но, видимо, это был не ожидаемый массив. В отличие от этой матрицы?


person user3648240    schedule 17.05.2014    source источник


Ответы (1)


Векторы движения хранятся в of, представляющем собой двумерный массив комплексных чисел. Действительная часть содержит координаты x, а мнимая часть содержит координаты y.

person Dima    schedule 20.05.2014