空格截图到指定文档

string writePath = "../temp/";
int main(int argc, char** argv){VideoCapture capture(0);string name;namedWindow("hello", CV_WINDOW_AUTOSIZE);int i=0;while (1) {Mat frame;capture >> frame;if (32 == waitKey(20)) {          //空格拍照name = writePath + "i"+".jpg";imwrite(name, frame);cout << name << endl;i++;}if (97 == waitKey(10)) {          //'a'退出break;}imshow("hello",frame);}//waitKey(0);
}

按时间间隔截图到指定文档

可以自己加一个条件来执行:

if(frameNUM % 10 == 0){strcpy_s(cur_fn,"");sprintf_s(cur_fn,"%s%d%s",outDir,frameNUM,imgExt);cvSaveImage(cur_fn,pImg,NULL);}
#include <stdio.h>
#include<opencv2/opencv.hpp>
#include<iostream>
#include<direct.h>
#include<io.h>
#include<string>using namespace std;
using namespace cv;int recursive_mkdir(char* dir);//recursive:递归,mkdir:DOS命令,建立一个新的子目录,dir:是directory目录的缩写
int VideoToImage( CvCapture* capture,char* outdir,char* imgext,int nowFrameNum);//视频转化为图片序列,nowFrameNum为当前帧数int main(int argc, char** argv)
{char* outDir1="D:\\EZ\\Image\\";VideoCapture cap(0);cap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);//宽度cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);//高度CvCapture* capture = cvCaptureFromCAM(0);if (!cap.isOpened()) // 检查打开是否成功return -1;double rate=cap.get(CV_CAP_PROP_FPS);//取得帧速率int delay=1000/rate;//根据帧速率计算帧之间的等待时间bool stop (false);Mat frame;//当前视频帧namedWindow("Extracted Frame");int nowFrameNum=0;while (!stop){if (!cap.read(frame))break;waitKey(1000);// 延时30msimshow("Extracted Frame",frame);nowFrameNum++; //统计帧数int images=VideoToImage(capture,outDir1,".jpg",nowFrameNum);}return 0;}//将视频转换为图片序列 返回由视频分解得到的图片总帧数 目前OpenCV只支持AVI格式 因此使用之前需要//将视频转化问AVI格式int  VideoToImage(CvCapture* capture,char* outDir,char* imgExt,int nowFrameNum){CvCapture *cap= cvCaptureFromCAM(0);if (cap==NULL){return 0;}//保存图片的文件夹路径一定要有,因为OpenCV不会自动创建文件夹//int _access(const char* Filename,int Access_Mode) 参数Filename 是访问文件所在的路径名,mode是访问判断模式//返回0 表示文件在当前路径已存在,返回-1表示该文件在当前路径不存在if (_access(outDir,0)==-1){recursive_mkdir(outDir);std::cout<<"输出目录不存在,并已自主创建"<<std::endl;}char cur_fn[255];//保存当前帧所得图片的文件名   表示某张图片的绝对路径  IplImage* pImg=NULL;int frameNUM=0;//函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。while((pImg=cvQueryFrame(cap))!=NULL&&(frameNUM=nowFrameNum))//{               frameNUM++;nowFrameNum++;strcpy_s(cur_fn,"");//strcpy_s是系统的安全函数,strcpy_s是根据'\0'判断源字符串结束的,strcpy_s是以字节为单位的参数,它用来确认缓冲区大小sprintf_s(cur_fn,"%s%d%s",outDir,frameNUM,imgExt);//这里的设置适合形如 123.jpg 124.jpg的图片序列  sprintf_s将格式化字符串存到缓冲区cvSaveImage(cur_fn,pImg,NULL);}cvReleaseImage(&pImg);cvReleaseCapture(&cap);return frameNUM;}//该函数借鉴了网上资料,自动创建多级目录int recursive_mkdir( char *dir ){//分解路径名E:\\AA\\BB\\CC\\//std::string str = dir;int index = 0;int i = 0;while(1){//size_type由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度// find 函数 返回"\\" 在index 中的下标位置 std::string::size_type pos = str.find("\\",index);std::string str1;str1 = str.substr(0,pos);//str.substr(a,b)是从a开始截取b个字符。if( pos != -1 && i > 0 ){if (_access(str1.c_str(),0)==-1)  // c_str():生成一个const char*指针,指向以空字符终止的数组.这个数组的数据是临时的{_mkdir(str1.c_str());}}if( pos==-1 ){break;}i ++;index = pos+1;}return 0;
}

C++Opencv实时读取摄像头视频保存指定帧图片相关推荐

  1. php视频生成指定帧图片,python3.5 cv2 获取视频特定帧生成jpg图片

    假如文件夹有大量视频文件,需求目标是想从每个视频中提取一帧作为视频的一个封面图片,本文利用opencv-python模块实现需求.结合自己的工作,做一下简单的记录,原本想生成可传参数的exe文件,以方 ...

  2. opencv2读取摄像头并保存为视频

    opencv2读取摄像头并保存为视频 #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui ...

  3. opencv-python读取摄像头视频流保存为视频

    opencv-python读取摄像头视频流保存为视频文件 opencv-python version:4.4.0.46 代码如下: import cv2# 通过cv2中的类获取视频流操作对象cap c ...

  4. Qt+OpenCV读取摄像头视频、本地视频、网络视频流Demo

    Qt+OpenCV读取摄像头视频.本地视频.网络视频流Demo

  5. OpenCv实时设置摄像头参数/获得摄像头参数值的方法论

    OpenCv实时设置摄像头参数/获得摄像头参数值的方法论 一.提醒: 在开始,摄像机修改之旅之前,出于负责任的态度.我想我需要提醒以下三点: 一.一旦你修改了这些参数,你的摄像头就被改动了,这是永久的 ...

  6. opencv读取avi视频并抽取帧

    opencv读取avi视频并抽取帧 #include "stdafx.h" #include <opencv2/opencv.hpp>using namespace s ...

  7. 基于ffmpeg+SDL 实时播放摄像头视频

    基于ffmpeg+SDL 实时播放摄像头视频 基本流程 udp接收rtp数据流接收一帧数据后,转换为NAL单元送去解码 (这里特别说明一下,我本次用的接口是支持从连续数据流中自动分割出一个个NAL的, ...

  8. opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片

    转载请注明文章来源:https://blog.csdn.net/caf1234/article/details/97671140 一.实现笔记本和海康网络摄像头(型号:DS-2CD3T86FWDV2- ...

  9. python选取本地视频的指定帧制作延时摄影

    通过cv2读取本地视频,获取视频的分辨率,然后读取视频的指定帧保存到新的本地视频中,制作成延时摄影视频. 通过cap.set(cv2.CAP_PROP_POS_FRAMES, keys_frame)语 ...

最新文章

  1. CentOS7添加中文输入法
  2. linux vim编辑器的用法
  3. vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分
  4. 吴恩达给 74 岁老父亲发证了!8 年完成 146 门课程!
  5. CDH预警配置QQ邮箱
  6. C++ chrono 库中的 steady_clock 、 system_clock、high_resolution_clock区别
  7. linux公社 java算法_Java快速排序算法
  8. .Net Core实现的文档数据库RavenDb
  9. md5sum/opensll md5
  10. oracle首先创建三个表,oracle一个创建用户、创建表空间、授权、建表的完整过程...
  11. 13 Zuul的配置
  12. List、Set、Map比较
  13. Linux系统编程之进程间通信
  14. android viewholder模式,Android ViewHolder模式
  15. CSS学习21:fixed(固定定位)
  16. 生物安全实验室送排风设计标准
  17. python搜索关键词的公众号文章标题和路径_微信文章关键词爬虫教程
  18. Your actions speak louder
  19. MyBatisPlus极速入门
  20. 为什么说汽车VIN码是汽车唯一的身份证

热门文章

  1. 靖江中等专业学校计算机,江苏靖江中等专业学校2020年有哪些专业
  2. JAVA日期格式化类
  3. xp网线连接正常 找不到服务器,WinXP网络连接正常无法上网怎么解决?
  4. postgres字符串转数字
  5. ChatGPT java体验
  6. 澎湃S2始终不见踪影,小米自主芯片之路已经凉凉?
  7. 利用CAD绘制粗糙的横纵断面图(手工绘制)
  8. vr运用在计算机专业上,VR虚拟技术在计算机教学中具体应用分析
  9. html左右飘窗高度不一致,飘窗高度偏高应该怎么处理?老师听听傅的经验之谈...
  10. django-admin动态多选框表单实现