YOLOv3 Windows端配置:Windows下 YOLOv3配置教程(YOLOv3項(xiàng)VS2013平臺遷移的方法) - maweifei的博客 - CSDN博客
一、批量保存圖像
根據(jù)上述的Windows端配置方法唇兑,所用的項(xiàng)目為ALexeyAB項(xiàng)目啼染,將ALexeyAB項(xiàng)目中的detector.c文件替換成官網(wǎng)項(xiàng)目中的detector.c文件逢慌,參考YOLOv3批量測試圖片并保存在自定義文件夾下 - mieleizhi0522的博客 - CSDN博客中的方法進(jìn)行改動。由于兩個(gè)項(xiàng)目中的部分函數(shù)參數(shù)不一,故在修改過程中還需對其它文件中的其它函數(shù)進(jìn)行修改徒役。讀者可以嘗試在ALexeyAB項(xiàng)目中對detector.c文件進(jìn)行修改捏境。
二于游、視頻操作
1、運(yùn)行
官網(wǎng)項(xiàng)目測試視頻主要通過調(diào)用detector demo?
darknet detector demo cfg/voc.data cfg/yolov3-voc.cfg results/yolov3-voc_final.weights input.mp4 -gpus 1
直接采用該文章所提的windows配置所用文件
AlexeyAB(Linux與Windows都可):https://github.com/AlexeyAB/darknet垫言,
也可直接用該方法直接運(yùn)行贰剥,在代碼上添加 -out_filename即可保存該文件。
darknet detector demo cfg/voc.data cfg/yolov3-voc.cfg yolov3-voc_final.weights input.mp4 -out_filename results/Videoout/out.mp4
筆者在進(jìn)行批量保存圖像中直接采用官網(wǎng)文件的detector.c文件進(jìn)行修改筷频,但是在demo.c文件采用的是ALexeyAB文件蚌成,故將detector.c上的detector.c文件的demo函數(shù)調(diào)用轉(zhuǎn)換為ALexeyAB項(xiàng)目中detector.c中的demo函數(shù)參數(shù)調(diào)用。需要注意凛捏,兩個(gè)文件的demo函數(shù)的參數(shù)不一担忧,讀者可根據(jù)自己需要進(jìn)行改動。
2坯癣、保存
linux端保存視頻主要修改demo.c文件與image.c文件:yolov3運(yùn)行及保存檢測視頻(包括攝像頭) - rs勿忘初心的博客 - CSDN博客
筆者在demo函數(shù)中添加如下函數(shù)瓶盛,以便在控制端沒有輸入保存路徑時(shí),自動保存在所設(shè)置的文件夾中,其中 //************LGY20190130*************中為添加的內(nèi)容示罗,可根據(jù)實(shí)際要求修改保存路徑惩猫。
CvVideoWriter* output_video_writer = NULL; // cv::VideoWriter output_video;
? ? if (out_filename && !flag_exit)
? ? {
? ? ? ? CvSize size;
? ? ? ? size.width = det_img->width, size.height = det_img->height;
? ? ? ? int src_fps = 25;
? ? ? ? src_fps = get_stream_fps(cap, cpp_video_capture);
? ? ? ? output_video_writer = cvCreateVideoWriter(out_filename, CV_FOURCC('D', 'I', 'V', 'X'), src_fps, size, 1);
? ? }
? ? //************LGY20190130*************
? ? else
? ? {
? ? ? ? CvSize size;
? ? ? ? size.width = det_img->width, size.height = det_img->height;
? ? ? ? int src_fps = 25;
? ? ? ? src_fps = get_stream_fps(cap, cpp_video_capture);
? ? ? ? if (access("results/Videoout", 00) == -1) // 保存的路徑
? ? ? ? {
? ? ? ? ? ? if (mkdir("results/Videoout", 0777))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("creat file bag failed !!!");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? char b[2048];
? ? ? ? char drive[2048], dir[2048], file_name[2048], ext[2048];
? ? ? ? _splitpath(filename, drive, dir, file_name, ext);
? ? ? ? sprintf(b, "results/Videoout/%s.%s", file_name,ext);
? ? ? ? output_video_writer = cvCreateVideoWriter(b, CV_FOURCC('D', 'I', 'V', 'X'), src_fps, size, 1);
? ? }
? ? //************LGY20190130*************