深度学习:视频转图片工具(附源码)

在利用深度学习进行目标检测时,需要自己拍数据集并转换成一张张图片进行打标签。本文分享一种基于 OpenCV 实现的视频文件转图片的工具。

源代码如下:

#include 
#include 
#include 
int main(int, char**) {
    cv::VideoCapture video;
    std::string filename="/home/workstation/Videos/runeVideo/Red_Dim.avi"; //在这里指定视频文件
    video.open(filename);
    cv::Mat src;
    static int cnt=0;
    while(video.read(src))
    {
        imshow("src",src);
        cv::waitKey(1);
        cnt++;
        printf("%d\n",cnt);
    }

    system("mkdir pic");

    printf("Input number of pictures:\n");
    int a;
    scanf("%d",&a);
    printf("Input start number:\n");
    int b;
    scanf("%d",&b);
    b--;

    int step=cnt/a;
    video.open(filename);
    while(video.read(src)){
        static int tick=0;
        static int num=b;
        if(tick<step) 
        { 
            tick++;
            continue;
        }
        imshow("src",src);
        cv::imwrite("pic/"+std::to_string(++num)+".jpg",src);
        cv::waitKey(1);
        tick=0;
    }
    return 0;
}

功能说明:输入期望生成的图片数和起始命名,则会根据读入的视频等间距生成数量与期望值大致相同的图片。例如,输入300 和 100,则会生成大概300张图片,并命名为 100.jpg, 101.jpg, …

执行效果:

运行后,首先会将原视频播放一遍,并显示帧数深度学习:视频转图片工具(附源码)_第1张图片

之后输入期望图片数量和起始点,即可开始转换:
深度学习:视频转图片工具(附源码)_第2张图片

转换完成,生成的图片如下:
深度学习:视频转图片工具(附源码)_第3张图片

你可能感兴趣的:(一些小想法,深度学习,人工智能,计算机视觉)