vision.OpticalFlow не показывает ни видео, ни значение потока

Я пытаюсь увидеть скорость объекта с помощью Matlab, поэтому я придумал этот код

reader = vision.VideoFileReader ('C:\folder1\objectsandflow.avi');
viewer = vision.DeployableVideoPlayer;
optical = vision.OpticalFlow;
optical.OutputValue = 'Horizontal and vertical components in complex form';
videoPlayer = vision.VideoPlayer('Name','Motion Vector');

while isDone (reader)
I = step(reader);
of = step (optical, rgb2gray(I));
y = of .* conj(of);
step(viewThresh,y>mean(y(:)));
step(videoPlayer)
end
release(videoPlayer);
release(reader);

Проблема в том, что я не могу видеть ни значения потока (я имею в виду, что я ищу скорость некоторых объектов, и я могу использовать для этого Matlab, не так ли?), ни видео

В то же время я не знаю, будет ли это работать для расчета всех скоростей моих объектов в случае, если этот код не может, как я могу вычислить несколько скоростей в Matlab?


person Jose Fernando Gomez Davila    schedule 05.09.2014    source источник


Ответы (1)


Ваша проблема в этих двух строках:

step(viewThresh,y>mean(y(:)));
step(videoPlayer)

Попробуйте заменить их на эти:

viewThresh = y;
viewThresh(y < mean(y(:))) = 0;
step(videoPlayer, viewThresh);

Вам не нужен метод step для пороговой обработки y, потому что вы не используете никаких объектов. И когда вы вызываете step для объекта videoPlayer, вы должны передать видеокадр, который хотите отобразить.

person Dima    schedule 08.09.2014
comment
я хочу знать скорость четырех объектов в моем видео, поэтому (согласно тому, что я нашел) мне нужно использовать шаг или оптический поток, но я до сих пор не знаю, как увидеть эти скорости в видео, я могу разделить мой объекты и считать их но я не знаю как или что сделать чтобы увидеть их скорость помогите помогите - person Jose Fernando Gomez Davila; 10.09.2014
comment
Вы можете использовать quiver для визуализации векторов потока. - person Dima; 22.09.2014