opencv读取视频并保存为图片
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读取视频并保存为图片相关推荐
- Opencv读取视频、打开摄像头、保存视频和视频倒放
原文出处:https://blog.csdn.net/yang_xian521/article/details/7440190 看了这个觉得说得很对,说白了Opencv主要针对是图像处理的计算机视觉库 ...
- 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题
解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...
- opencv录制视频进行保存
使用opencv进行视频的保存需要用到cv2.VideoWriter这个对象. VideoWriter(filename, fourcc, fps, frameSize[, isColor]) fil ...
- python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题
博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...
- Opencv学习_3 (Opencv读取视频 视频进度控制 写视频)
opencv读取视频: 使用opencv读取视频主要用到这几个函数:cvCreateFileCapture cvQueryFrame (或cvGrabFrame cvRetrieveFrame) ...
- OpenCV读取视频文件的实例(附完整代码)
OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 #include <iostream> // for standard I/O #inclu ...
- 使用OpenCV读取视频和视频的相似性度量
使用OpenCV读取视频和视频的相似性度量 目标 当今,数字摄像设备是随处可见.因此,一定会遇到这样的情况:图像处理已经不能满足要求,而需要进行视频处理.这大致分两种情况: 1.实时采集(对于网络摄像 ...
- qt下使用opencv读取视频
测试环境:ubuntu18.04+opencv4.2+Qt 一个基础的opencv读取视频并显示demo. video.pro文件: SOURCES += main.cppINCLUDEPATH += ...
- python用OpenCV读取视频帧数、高度宽度等
python用OpenCV读取视频帧数.高度宽度等 import cv2 import time# 2655 def get_each_frame(video_path):# 读取视频文件videoC ...
最新文章
- KMP算法的实现以及改进
- Linux下samba服务器的搭建和配置
- LNOI2014 LCA
- 国庆七天乐 Day5
- awstats 简单日志分析
- 最短路和次短路问题,dijkstra算法
- 【转】超酷的 mip-infinitescroll 无限滚动(无限下拉)
- python图像等比例压缩_python使用pil进行图像处理(等比例压缩、裁剪)实例代码
- 绕过waf mysql爆库_sqlilab-Less-21-30-writeup
- mysql in 数字类型_关于sql where id in 转换成数据类型 int 时失败
- 性能测试之JMeter配置元件【HTTP信息头管理器】
- android中Canvas使用drawBitmap绘制图片
- java实现单向链表的增、删、改、查
- java 支持 shards 的jar_Solr Cloud:跨节点分配Shards
- cascader回显
- qt 飞扬青云_Qt编写图片及视频TCP/UDP网络传输
- 【笔试】中移物联网重庆公司
- cjavapy在线正则表达式测试工具
- NKOJ 1361 帮帮吉米(Help Jimmy)
- 关于Vue中$nextTick的作用及实现原理(Vue进阶)
热门文章
- qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
- matlab mex路径,使用matlab进行mex编译时的路径问题mexopts
- nacos 本地测试_Nacos集群配置实例(windows下测试)
- 光端机各种类型的接口介绍
- 【渝粤教育】国家开放大学2019年春季 1332中文学科论文写作 参考试题
- 【渝粤教育】电大中专学前儿童科学教育 (5)作业 题库
- php变量 声明提升,TypeScript:let和const变量声明
- python内核死亡的原因_Python的内核由于DLL而死亡
- 应用c语言编辑画图程序,应用C语言编辑画图程序
- C语言文件读写操作之换行符处理