1.功能:

opencv读取指定文件夹中的视频文件,按照一定的间隔截取某些帧,将这些帧图像连续命名,存储在指定文件夹里。

2.代码如下:

(1)IplImage

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>void Video_to_image(char* filename,char * outfile, int interval)
{//初始化一个视频文件捕捉器CvCapture* capture = cvCaptureFromAVI(filename);//获取视频帧数信息cvQueryFrame(capture);int numFrames = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);//视频帧数//printf("frame numbers : %d/n",numFrames);//定义和初始化变量int thisframe = 0;IplImage* img = 0;char image_name[100];//用来存储保存的图片名字while(1){img = cvQueryFrame(capture); //获取一帧图片if (!img || thisframe >= numFrames)//若图像为空或超出总帧数跳出,则跳出{break;}if (thisframe % interval == 0){sprintf(image_name,"%s%s%d%s", outfile,"image", thisframe, ".jpg");//保存的图片名cvSaveImage(image_name, img);   //保存一帧图片}thisframe++;}cvReleaseCapture(&capture);cvReleaseImage(&img);
}
int main()
{char filename[100] = "E://C_pagram//readvideo//readvideo//readvideo//Wildlife.wmv";char outfile[100] = "E://C_pagram//readvideo//readvideo//data//";int interval = 10;//设置间隔Video_to_image(filename,outfile, interval); //输入视频文件路径及名称、帧间隔return 0;
}

(2)Mat

#define _CRT_SECURE_NO_DEPRECATE#include <iostream>
#include "cv.h"
#include "opencv2/opencv.hpp"  using namespace std;
using namespace cv;// 描述:将视频帧转成图片输出
void main()
{// 获取视频文件  VideoCapture cap("E:\\C_pagram\\readvideo\\readvideo\\Wildlife.wmv");// 获取视频总帧数  long totalFrameNumber = cap.get(CV_CAP_PROP_FRAME_COUNT);cout << "total frames: " << totalFrameNumber << endl;//输出总帧数Mat frame;bool flags = true;long currentFrame = 0;while (flags){// 读取视频每一帧  cap.read(frame);stringstream str;str << "_" << currentFrame << ".jpg";// 设置每50帧获取一次帧  if (currentFrame % 50 == 0 && !frame.empty())//当图片不为空时保存{// 将帧转成图片输出  imwrite("E:\\C_pagram\\readvideo\\readvideo\\data\\image" + str.str(), frame);}// 结束条件  if (currentFrame >= totalFrameNumber){flags = false;}currentFrame++;}system("pause");
}

3.注意

(1)输入文件路径时,用//或者\都可以;

(2)sprintf里面图片名称可以组合起来,用逗号隔开,其中 outfile已经是字符串的格式,不用加双引号;

(3)if (!img) {break;}这句判断没加之前导出的图片最后一张是空的;

(4)局部定义IplImage* img = 0;就局部释放该指针cvReleaseImage(&img);

(5)程序(2)输出的第一张图为全黑的不为空,最后一张图为空,加上判断可以去掉最后一张空图;

if (currentFrame % 50 == 0 && !frame.empty())若不为空,保存

if (currentFrame % 50 == 0 && frame.data)若frame的data有数据,保存

以上两种方法都可以。

opencv读取视频并保存为图片相关推荐

  1. Opencv读取视频、打开摄像头、保存视频和视频倒放

    原文出处:https://blog.csdn.net/yang_xian521/article/details/7440190 看了这个觉得说得很对,说白了Opencv主要针对是图像处理的计算机视觉库 ...

  2. 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题

    解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...

  3. opencv录制视频进行保存

    使用opencv进行视频的保存需要用到cv2.VideoWriter这个对象. VideoWriter(filename, fourcc, fps, frameSize[, isColor]) fil ...

  4. python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题

    博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...

  5. Opencv学习_3 (Opencv读取视频 视频进度控制 写视频)

    opencv读取视频: 使用opencv读取视频主要用到这几个函数:cvCreateFileCapture  cvQueryFrame (或cvGrabFrame cvRetrieveFrame)   ...

  6. OpenCV读取视频文件的实例(附完整代码)

    OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 #include <iostream> // for standard I/O #inclu ...

  7. 使用OpenCV读取视频和视频的相似性度量

    使用OpenCV读取视频和视频的相似性度量 目标 当今,数字摄像设备是随处可见.因此,一定会遇到这样的情况:图像处理已经不能满足要求,而需要进行视频处理.这大致分两种情况: 1.实时采集(对于网络摄像 ...

  8. qt下使用opencv读取视频

    测试环境:ubuntu18.04+opencv4.2+Qt 一个基础的opencv读取视频并显示demo. video.pro文件: SOURCES += main.cppINCLUDEPATH += ...

  9. python用OpenCV读取视频帧数、高度宽度等

    python用OpenCV读取视频帧数.高度宽度等 import cv2 import time# 2655 def get_each_frame(video_path):# 读取视频文件videoC ...

最新文章

  1. KMP算法的实现以及改进
  2. Linux下samba服务器的搭建和配置
  3. LNOI2014 LCA
  4. 国庆七天乐 Day5
  5. awstats 简单日志分析
  6. 最短路和次短路问题,dijkstra算法
  7. 【转】超酷的 mip-infinitescroll 无限滚动(无限下拉)
  8. python图像等比例压缩_python使用pil进行图像处理(等比例压缩、裁剪)实例代码
  9. 绕过waf mysql爆库_sqlilab-Less-21-30-writeup
  10. mysql in 数字类型_关于sql where id in 转换成数据类型 int 时失败
  11. 性能测试之JMeter配置元件【HTTP信息头管理器】
  12. android中Canvas使用drawBitmap绘制图片
  13. java实现单向链表的增、删、改、查
  14. java 支持 shards 的jar_Solr Cloud:跨节点分配Shards
  15. cascader回显
  16. qt 飞扬青云_Qt编写图片及视频TCP/UDP网络传输
  17. 【笔试】中移物联网重庆公司
  18. cjavapy在线正则表达式测试工具
  19. NKOJ 1361 帮帮吉米(Help Jimmy)
  20. 关于Vue中$nextTick的作用及实现原理(Vue进阶)

热门文章

  1. qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
  2. matlab mex路径,使用matlab进行mex编译时的路径问题mexopts
  3. nacos 本地测试_Nacos集群配置实例(windows下测试)
  4. 光端机各种类型的接口介绍
  5. 【渝粤教育】国家开放大学2019年春季 1332中文学科论文写作 参考试题
  6. 【渝粤教育】电大中专学前儿童科学教育 (5)作业 题库
  7. php变量 声明提升,TypeScript:let和const变量声明
  8. python内核死亡的原因_Python的内核由于DLL而死亡
  9. 应用c语言编辑画图程序,应用C语言编辑画图程序
  10. C语言文件读写操作之换行符处理