【OPENCV】OPENCV+获取视频中某一帧的图像并保存

配置:
opencv3.2
VS2017
Windows10

  1. 下载opencv 并添加path路径之后在VS上配置具体网上很多例子写的都不错
    可以看下http://blog.csdn.net/poem_qianmo/article/details/19809337/

2.代码部分

// GetApictureOfVideos.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "string"
#include <iostream>//io流  cout
#include <opencv2/highgui/highgui.hpp>//添加此句不出错说明安装配置成功
#include <time.h>

using namespace std;
using namespace cv;
void Video_to_Image(string filename)
{
	VideoCapture capture(filename);//获取VideoCapture 对象
	if (!capture.isOpened())
	{
		cout << "open video error";
	}
	//capture.get十分强大 可以获得帧的很多信息
	int frame_width = (int)capture.get(CAP_PROP_FRAME_WIDTH);
	int frame_height = (int)capture.get(CAP_PROP_FRAME_HEIGHT);
	int frame_number = capture.get(CAP_PROP_FRAME_COUNT);
	cout << "frame_width is " << frame_width << endl;
	cout << "frame_height is " << frame_height << endl;
	cout << "frame_number is " << frame_number << endl;
	srand((unsigned)time(NULL));#时间点
	long frameToStart = rand() % frame_number;#取  最大帧数之内的 随机数
	cout <<"帧开始的地方"<< frameToStart << endl;
	capture.set(CAP_PROP_POS_FRAMES, frameToStart);//从此时的帧数开始获取帧
	
	Mat frame; #Mat对象  其实就是图像对象
	char image_name[20];
	if (!capture.read(frame))
	{
		cout << "读取视频失败" << endl;
	 }
	imshow("che", frame);//显示
	sprintf(image_name, "%s%s", "image", ".jpg");//保存的图片名
	imwrite(image_name, frame);#写入  前面是  path+name不要忘了后缀 后面是 帧
	
	capture.release();#释放对象


}
int main()
{
	string filename = "F:/1.mp4";
	Video_to_Image(filename);
	waitKey(0);
    return 0;
}


联系本人,手机观看,欢迎关注本人公众号

在这里插入图片描述

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页