保存视频每一帧至指定文件夹
Video=VideoReader(FileName) %可添加Name,Value键值对
for ii = 1:Video.NumFrames
frames = read(Video, ii);
imwrite(frames, ['PhotoesFileName', 'frame' num2str(ii,'%.5d') '.jpg']);%写入当前路径的PhotoesFileName文件夹中
end
训练trainCascadeObjectDetector分类器,也可采用Matlab中自带的分类器用于目标检测
imds =imageDatastore('birds');%birds文件下为用于训练分类器包含目标的图片,即正例
blds = boxLabelDatastore(gTruth.LabelData);%目标所对应图片的位置
positiveInstances=combine(imds,blds);
negativeFolder = fullfile('backgroud');%文件下不包含目标的图片,即反例
trainCascadeObjectDetector('Detector.xml',positiveInstances,negativeFolder,NumCascadeStages=2,ObjectTrainingSize=[200,200]);%参数设置,默认hog特征
采用自带分类器则detector=vision.CascadeObjectDetector(),根据需要设置参数,默认为人脸检测器
detector = vision.CascadeObjectDetector('Detector.xml',MinSize=[200,200],MaxSize=[500,500]);
open(outputVideo);
for i = 1:numel(PhotoesFileName.Files)%
frame = readimage(PhotoesFileName, i);
bbox = step(detector, frame);
detectedImg = insertObjectAnnotation(frame, 'rectangle', bbox, '',color='red',LineWidth=5);
writeVideo(outputVideo, detectedImg);
end
%目标检测并写入创建的视频文件中
close(outputVideo);
常见问题:1.没有写入权限 2.找不到文件 3.训练目标检测器
1.启动matlab时右键以管理员身份启动
2.将文件夹路径添加到搜索路径中
3.参考(10条消息) 在Matlab下训练级联目标检测器_vision.cascadeobjectdetector_鹊踏枝-码农的博客-CSDN博客