我正在尝试使用 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中计算多个速度?
你的问题出在这两行:
step(viewThresh,y>mean(y(:)));
step(videoPlayer)
尝试用这些替换它们:
viewThresh = y;
viewThresh(y < mean(y(:))) = 0;
step(videoPlayer, viewThresh);
您不需要
step
方法来进行阈值处理 y
,因为您没有使用任何对象。当你在 step
对象上调用 videoPlayer
时,你必须传入你想要显示的视频帧。