视频截图,仅仅实现了给AVI格式的视频截取图像,以后可以扩展。这里面视频和图像输出均与代码在同一个文件夹下。如果要输出到其他文件夹下,需要手动改变路径。

#include "highgui.h"#include <iostream>
#include <windows.h>using namespace std;
using namespace cv;int main()
{CvCapture *capture;    //视频捕获结构变量的定义capture=cvCaptureFromAVI("leslie_Red_DVD.avi"); //获取视频int count=cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT );// 视频文件中帧的总数long t=1; //时间int num=200;   //定义截取的图像数目,此处为200张,可自由定义int kNum=count/num; //定义帧位置stringstream s;  //定义输出图像名称缓冲区IplImage* imgOut;  //输出图像变量while(kNum<count){cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, kNum);   //定义帧位置IplImage *img=cvQueryFrame(capture);    //从视频中获取一帧imgOut=cvCreateImage(cvGetSize(img),img->depth,img->nChannels);    //初始化输出cvCopy(img,imgOut,NULL); //复制图像char time[20];SYSTEMTIME sys = {0};GetLocalTime(&sys);sprintf(time, "%4d%02d%02d%02d%02d%02d%03d星期%1d",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek); //t=(long)cvGetTickCount();s<<"result"<<time<<".jpg";//char* image_name;//sprintf(image_name, "%s%d%s", "image", t, ".jpg");//保存的图片名//cvSaveImage(image_name, img);   //保存一帧图片cvSaveImage(s.str().c_str(),imgOut); //保存cvWaitKey(5);   //等待s.str("");    //清空图像名称缓冲区cvReleaseImage(&imgOut); //释放图像内存kNum+=count/num;  //帧递增}cvReleaseCapture(&capture);   //释放视频获取结构变量的内存
}

1、关于cvGetCaptureProperty函数

该函数利用property_id属性来获取视频或者摄像头的一定属性值;函数原型为:

double cvGetCaptureProperty( CvCapture* capture, int property_id );

property_id的值主要利用到一下几个:

CV_CAP_PROP_POS_MSEC - 影片目前位置,为毫秒数或者视频获取时间戳
CV_CAP_PROP_POS_FRAMES - 将被下一步解压/获取的帧索引,以0为起点
CV_CAP_PROP_POS_AVI_RATIO - 视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾)
CV_CAP_PROP_FRAME_WIDTH - 视频流中的帧宽度
CV_CAP_PROP_FRAME_HEIGHT - 视频流中的帧高度
CV_CAP_PROP_FPS - 帧率
CV_CAP_PROP_FOURCC - 表示codec的四个字符
CV_CAP_PROP_FRAME_COUNT - 视频文件中帧的总数
2、关于cvSetCaptureProperty函数
设置视频或者摄像头获取结构的属性。函数原型如下:
int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );

capture为获取结构,property_id为属性(详见cvGetCaptureProperty函数),value为要设置的值。

3、这里有一个视频播放的代码,实现了滚动条控制播放进程。链接如下:
OpenCV播放视频 加上滚动条

利用opencv给视频截图相关推荐

  1. AI 质检学习报告——实践篇——第三步:python利用OpenCV打开摄像头截图后实现图片识字

    AI 质检学习报告--实践篇--第一步:python利用OpenCV打开摄像头并截图 AI 质检学习报告--实践篇--第二步:实现图片识字 前边两篇实践已经分别实现了利用OpenCV打开摄像头并截图和 ...

  2. 【QT课程设计】五:部分内容修正、利用opencv读入视频并进行部分图像处理

    文章目录 前置文章与导航索引 前言 错误修正 伽马变换数值问题 错误描述 错误修改过程 视频部分 布局设计 opencv的使用 opencv的编译&配置 打开视频 Qtimer简介 视频读取 ...

  3. 利用opencv改变视频长宽

    #include <windows.h> #include "cv.h" #include "highgui.h" int main() {CvCa ...

  4. 【.net】利用FFmpeg获取视频截图

    目标及工具 这里使用vb.net结合FFmpeg截取视频中的图片.本文使用的编程工具是Visual Studio Community 2022,这个版本是在官方下载的安装的纯免费使用,而且基本功能都可 ...

  5. OpenCV实现视频人脸检测

    利用OpenCV实现视频人脸检测,包含眼部检测.首先,将人脸检测和眼部检测需要的模型文件haarcascade_eye.xml和haarcascade_frontalface_default.xml放 ...

  6. python 多帧 超分辨_利用python-opencv生成视频帧数控制,和常见错误总结

    首先呢 利用opencv生成视频的例子相信网络上已经很多了.但是大多数例子都只是捕获一个摄像头就没了.但是在实际运用中会发现.因为涉及到图像处理,生成的视频要不就就是过快要不就是比实际时间长. 控制视 ...

  7. OpenCV将视频转存为一帧帧的图片(Python)

    利用OpenCV将视频逐帧保存,代码如下. #coding=utf-8 import cv2 import ospath = 'video' video_list = os.listdir(path) ...

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

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

  9. pythonopencv读取视频帧慢_利用python-opencv生成视频帧数控制,和常见错误总结

    首先呢 利用opencv生成视频的例子相信网络上已经很多了.但是大多数例子都只是捕获一个摄像头就没了.但是在实际运用中会发现.因为涉及到图像处理,生成的视频要不就就是过快要不就是比实际时间长. 控制视 ...

最新文章

  1. 关于iOS10的适配
  2. 获取java返回的数据_java调用第三方接口,获取接口返回的数据。
  3. opencv图像处理总结
  4. OpenCV转换PyTorch分类模型并使用OpenCV Python启动
  5. 2021年四季度企业薪酬报告发布 38个核心城市平均薪酬首次超万
  6. 【机器视觉】 for算子
  7. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
  8. 瀑布流布局JavaScript实现
  9. mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误
  10. Python基础——continute与break(循环控制)
  11. 学习OO,实现的小跟堆代码
  12. 【运动学】基于matlab斜抛物体斜坡射程【含Matlab源码 980期】
  13. 试试54款开源服务器软件 (比较知名的软件大集合)
  14. Pillow图像几何变换
  15. opencv:图像的读取和显示
  16. 四、异常(高琪java300集+java从入门到精通笔记)
  17. matlab批量下载网页文件
  18. 记一个异常原因,QQ和微信可以正常使用,无法访问百度
  19. False Coin
  20. svn提示xxx文件已经过时

热门文章

  1. 我要搬家到CSDN了,好吧
  2. GraphicConverter Mac图片浏览和编辑器
  3. QGIS插件python开发环境配置和PyCharm配置调试环境
  4. childnodes与children详解
  5. TIDB 性能测试(TIUP-TPCC)
  6. The provisioning profile is expiring soon
  7. visio拉动线条总是保持直线状态
  8. 图的概念与主要类型、图模型的应用场景
  9. 安卓开发-Parcel机制
  10. 数据结构课程设计之区块链工作原理模拟设计