我怎么能让一个循环过程”。”avi文件到一个文件夹中,然后产生相应的”。txt”和“。png”文件?

11视图(30天)
我创建一个深度学习与Python和Tensorflow CNN,但信息将用于网络将在MATLAB处理,所以我的任务如下:
我使用MathWorks”MotionBasedMultiObjectTracking示例代码,但修改它以这样一种方式,它追踪一个移动的物体,比如一个人,在提供。avi文件,它检索(x, y)坐标的边界框的重心移动时在每一帧,并写道,信息”。txt文件。虽然它,它还应该打印白色圆点的图案,在一个全黑的图像,它代表的重心/ (x, y)坐标变化在每一帧,并保存结果形象”。png文件。
我已经有这一部分,但是提供的信息只是为了提供一个更好的理解我想完成整体。现在我的问题是我不知道如何写一个函数或脚本,可以通过我所有的.avi文件并生成相应的x, y coord . txt文件和点模式. png文件。这里有一些代码:
函数MotionBasedMultiObjectTrackingExample ()
%创建一个白色的形象
imageTraj = 255 * (480、640、“uint8”);
blackTraj = 0 * imageTraj;
%保存轨迹数据创建一个文件
文件标识= fopen (“模式1 - 1. - txt”,“w +”);
% imshow(图片);
%用于创建系统对象阅读视频,检测运动物体,
%和显示结果。
obj = setupSystemObjects ();
跟踪= initializeTracks ();%的创建一个空数组。
nextId = 1;%的ID下一个轨道
%检测运动物体,并在视频帧跟踪它们。
~结束(obj.reader)
帧= readFrame ();
[重心,bboxes,面具]= detectObjects(框架);
predictNewLocationsOfTracks ();
(作业、unassignedTracks unassignedDetections] =
detectionToTrackAssignment ();
updateAssignedTracks ();
updateUnassignedTracks ();
deleteLostTracks ();
createNewTracks ();
displayTrackingResults ();
结束%的结束而
文件关闭(文件标识);
saveas (gcf“模式1 - 1. - png”);
%为扩张打开生成的图像
BW = imread (“模式1 - 1. - png”)
%扩张函数(strel(膨胀型,dilation_strength))
SE = strel (“广场”8);
%实际执行扩张和显示新的扩张的形象
BW2 = imdilate (BW, SE);
图,imshow (BW2)、标题(“扩张”)
%调整扩张的形象
BW3 = imresize (BW2 (64 64));
图,imshow (BW3)、标题(大小和扩张)
saveas (BW3“resizedBW3.png”);
% %创建系统对象
%用于创建系统对象读取视频帧,检测
%前景物体,并显示结果。
函数obj = setupSystemObjects ()
%初始化视频I / O
%为阅读视频从一个文件中创建对象,跟踪
%每一帧中的对象,和玩视频。
%读者创建一个视频文件。
% obj。读者= vision.VideoFileReader (“udcvideo.mp4.mp4”);
obj。读者= vision.VideoFileReader (场景1 - 1. avi的);
%创建两个视频播放器,一个显示视频,
%和一个显示前台面具。
obj。maskPlayer = vision.VideoPlayer (“位置”,740,400,700,400);
obj。放像机= vision.VideoPlayer (“位置”,400,700,400);
%为前景检测和blob分析创建系统对象
%前台探测器是用来段移动对象
%的背景。它输出二进制掩模,像素值
% 1的值对应于前景和0对应
%的背景。
obj.detector = vision.ForegroundDetector (“NumGaussians”3,
“NumTrainingFrames”现年40岁的“MinimumBackgroundRatio”,0.7);
%连接组的前景像素可能对应于运动
%的对象。blob分析系统对象用于发现这些组织
%(称为“blob”或“连接组件”),并计算他们
%的特征,如面积、质心和边界框。
obj。blobAnalyser = vision.BlobAnalysis (“BoundingBoxOutputPort”,真的,
“AreaOutputPort”,真的,“CentroidOutputPort”,真的,
“MinimumBlobArea”,400);
结束%的setupSystemObjects ()
我的视频在文件夹命名如下:场景1 - 1到1 - 10,场景2 - 1至2 - 10 ....场景1的真空度。这是100年。avi文件的文件夹。在setupSystemObjects()函数,我视频文件阅读器提供场景1 - 1. avi。当我运行这个程序时,它运行场景1 - 1上的过程。avi,生产模式1 - 1。txt和模式1 - 1。png,就像我想要的。最大的问题是我怎样才能循环,每次更新文件名,这样每次函数被调用时,它将移动到下一个文件,假设1 - 2的场景。avi的例如,并产生相应的. txt和png文件,直到它已经完成了100个视频的文件夹。
我开发了这个循环,但我不知道如何从这里出发:(下面的评论里面的代码会在这里只是我尝试不同的东西。
函数FileExample ()
d = uigetdir (,选择输入文件夹的);%选择输入文件夹,其中包含子文件夹
cd (d);
列表= dir;
列表= ((list.isdir));
列表= (~ ismember ({list.name}, {”。“. .”}));
l =长度(列表);
i = 1: l
oldfolder = cd(列表(我). name);
%执行您的操作文件,例如,如果你正在与avi文件
文件= dir (‘* .avi‘);
numberOfFiles =长度(文件);
k = 1: numberOfFiles
%的代码会在这里
%
%文件名文件(k)
% MotionBasedMultiObjectTrackingExample (k)(文件)
结束
cd (oldfolder);
结束
结束

答案(2)

罗
2021年3月6日
编辑: 2021年3月8日
清晰;
关闭所有;
[logfname,路径名]= uigetfile (‘* .mat‘,选择任何AVI文件的);
cd(路径);
%的AVI文件在文件夹列表
file_list = dir (‘* .AVI‘);%创建一个AVI文件列表基于文件夹的内容
2的评论

登录置评。


1月
1月 2021年3月6日
编辑:1月 2021年3月6日
函数FileExample ()
文件夹= uigetdir (,选择输入文件夹的);
文件列表= dir (fullfile(文件夹,“* *”,‘* .avi‘));%选择所有AVI在文件夹和子文件夹
iFile = 1:元素个数(文件列表)
文件= fullfile(文件列表(iFile)。文件夹,文件列表(iFile) . name);
%的代码会在这里
MotionBasedMultiObjectTrackingExample(文件);
结束
现在的高中生MotionBasedMultiObjectTrackingExample必须接受文件名作为输入,并imprt这个文件。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!