首页 > 其他 > 详细

抽取视频中的帧并保存为图片

时间:2019-04-30 19:39:47      阅读:161      评论:0      收藏:0      [点我收藏+]

注:原创不易,转载请务必注明原作者和出处,感谢支持!

保存视频中的帧

利用OpenCV提供的VideoCapture类可以轻松实现保存视频中帧的功能。下面代码可以将一个视频文件中的所有帧抽取并保存成JPG图像。

videoName - 视频文件名
imagePath - 图片保存的路径
imagePrefix - 图片文件前缀字符串

图片完整路径:imagePath + "/" + imagePrefix + to_string(i) + ".jpg"

void ExtractFrames(const string &videoName, const string &imagePath, const string &imagePrefix)
{
    VideoCapture cap;
    Mat img;

    // 打开视频
    cap.open(videoName);
    if (!cap.isOpened())
    {
        cout << "Error : could not load video" << endl;
        exit(-1);
    }

    // 取得视频帧数
    size_t count = (size_t)cap.get(CV_CAP_PROP_FRAME_COUNT);
    for (size_t i = 0; i < count; ++i)
    {
        cap >> img;
        string imgName = imagePath + "/" + imagePrefix + to_string(i) + ".jpg";
        // 将当前帧保存
        imwrite(imgName, img);
        cout << "Frames " << i << " ... done" << endl;
    }
}

ExtractFrames调用实例:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{
    ExtractFrames("E:/images/video/1.mp4", "E:/images/video", "red-forest");

    return 0;
}

抽取出的图片将被保存为:

red-forest0.jpg
red-forest1.jpg
red-forest2.jpg
...

red-forest45.jpg
技术分享图片

抽取视频中的帧并保存为图片

原文:https://www.cnblogs.com/laizhenghong2012/p/10797745.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!