2014-09-05 3 views
1

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

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?

ответ

0

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

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

Попробуйте заменить их следующими:

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

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

+0

Я хочу знать скорость четырех объектов в моем видео, поэтому (в соответствии с тем, что я нашел) мне нужно использовать шаг или оптический поток, но я до сих пор не знаю, как увидеть эти скорости в видео, я может секвестировать мои объекты и считать их, но я не знаю, как или что делать, чтобы увидеть их помощь в помощи помощи. –

+0

Вы можете использовать 'quiver' для визуализации векторов потока. – Dima