美文网首页
Yolov3-Windows 批量保存图像及运行与保存视频

Yolov3-Windows 批量保存图像及运行与保存视频

作者: 果园林 | 来源:发表于2019-01-30 15:46 被阅读0次

    YOLOv3 Windows端配置:Windows下 YOLOv3配置教程(YOLOv3项VS2013平台迁移的方法) - maweifei的博客 - CSDN博客


    一、批量保存图像

    根据上述的Windows端配置方法,所用的项目为ALexeyAB项目,将ALexeyAB项目中的detector.c文件替换成官网项目中的detector.c文件,参考YOLOv3批量测试图片并保存在自定义文件夹下 - mieleizhi0522的博客 - CSDN博客中的方法进行改动。由于两个项目中的部分函数参数不一,故在修改过程中还需对其它文件中的其它函数进行修改。读者可以尝试在ALexeyAB项目中对detector.c文件进行修改。

    二、视频操作

    1、运行

    官网项目测试视频主要通过调用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

    也可直接用该方法直接运行,在代码上添加 -out_filename即可保存该文件。

    darknet detector demo cfg/voc.data cfg/yolov3-voc.cfg yolov3-voc_final.weights input.mp4 -out_filename results/Videoout/out.mp4


    笔者在进行批量保存图像中直接采用官网文件的detector.c文件进行修改,但是在demo.c文件采用的是ALexeyAB文件,故将detector.c上的detector.c文件的demo函数调用转换为ALexeyAB项目中detector.c中的demo函数参数调用。需要注意,两个文件的demo函数的参数不一,读者可根据自己需要进行改动。

    2、保存

    linux端保存视频主要修改demo.c文件与image.c文件:yolov3运行及保存检测视频(包括摄像头) - rs勿忘初心的博客 - CSDN博客


    笔者在demo函数中添加如下函数,以便在控制端没有输入保存路径时,自动保存在所设置的文件夹中,其中 //************LGY20190130*************中为添加的内容,可根据实际要求修改保存路径。

    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*************

    相关文章

      网友评论

          本文标题:Yolov3-Windows 批量保存图像及运行与保存视频

          本文链接:https://www.haomeiwen.com/subject/cnxxsqtx.html