1

我试图通过使用 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中计算多个速度?

4

1 回答 1

0

您的问题在于这两行:

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

尝试用这些替换它们:

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

您不需要step阈值方法y,因为您没有使用任何对象。当你调用对象stepvideoPlayer,你必须传入你想要显示的视频帧。

于 2014-09-08T14:06:16.107 回答