opencv实现定时录像功能

opencv作为一款强大的机器视觉库,以其简便性得到了各图像处理开发人员的青睐。现在就给大家介绍如何用opencv实现定时录像并以实际时间作为文件名保存。之前网上已经有一些类似的代码,但是大多数网友反映程序无法执行,主要分析有两个原因。电脑上未安装视频编码器,这里推荐大家XviD,网上不好下载可以私信我或是留下邮箱,我统一发送。然后在选择编码格式上,我选择的是'X', 'V', 'I', 'D'格式,也就是我们常见的avi格式。

  #include "cv.h"
  #include "cxcore.h"
  #include "highgui.h"
  #include <iostream>
  #include <time.h>
  #include <Windows.h>
  #include <Mmsystem.h>
  #include "stdio.h"
  int timea=100000;
  using namespace std;
/*void times()
{
  SYSTEMTIME sys_time; 

  //将变量值设置为本地时间
  GetLocalTime( &sys_time ); 

  //输出时间
  printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys_time.wYear,
    sys_time.wMonth,
    sys_time.wDay,
    sys_time.wHour,
    sys_time.wMinute,
    sys_time.wSecond,
    sys_time.wMilliseconds,
    sys_time.wDayOfWeek); 

 // system("time");
  //
 // system("pause");
  return 0; 

} */
  int main()
  {
    CvCapture* capture=cvCaptureFromCAM(0);
    CvVideoWriter* video=NULL;
    IplImage* frame=NULL;
    int n;
    if(!capture) //如果不能打开摄像头给出警告
    {
     cout<<"Can not open the camera."<<endl;
     return -1;
    }
    else
    {
     frame=cvQueryFrame(capture); //首先取得摄像头中的一帧
    int c=0;
    SYSTEMTIME sys_time; 

  //将变量值设置为本地时间
    GetLocalTime( &sys_time );
    char buf[1024];
    sprintf(buf,"camera-%4d-%2d-%02d-%02d-%02d-%02d.avi",sys_time.wYear,sys_time.wMonth,sys_time.wDay,
    sys_time.wHour,sys_time.wMinute, sys_time.wSecond);  

      video=cvCreateVideoWriter(buf, CV_FOURCC('X', 'V', 'I', 'D'), 25,
     cvSize(frame->width,frame->height)); //创建CvVideoWriter对象并分配空间
  //保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32
     if(video) //如果能创建CvVideoWriter对象则表明成功
      {
       cout<<"VideoWriter has created."<<endl;
     }
   cout<<"set the record time\n"<<endl;//设置录像时间
   cin>>timea;
   int ti=timea*25; 

     cvNamedWindow("Camera Video",1); //新建一个窗口
      int i = 0;
     while(i <= ti) // 让它循环ti次自动停止录取
      {
       frame=cvQueryFrame(capture); //从CvCapture中获得一帧
       if(!frame)
       {
        cout<<"Can not get frame from the capture."<<endl;
        break;
       }
       n=cvWriteFrame(video,frame); //判断是否写入成功,如果返回的是1,表示写入成功
       // cout<<n<<endl;
       cvShowImage("Camera Video",frame); //显示视频内容的图片
       i++;
       if(cvWaitKey(2)>0)
        break; //有其他键盘响应,则退出
     }  

     cvReleaseVideoWriter(&video); //如果不释放则春不上
     cvReleaseCapture(&capture);
     cvDestroyWindow("Camera Video");
    }
    return 0;
  }  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用opencv拉伸图像扩大分辨率示例

    使用OPENCV图像处理库,拉伸图像扩大分辨率 复制代码 代码如下: //缩放图像文件#include <opencv2/opencv.hpp>using namespace std;//隐藏控制台窗口#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")int main(){ const char *pstrImageName = &qu

  • Opencv实现读取摄像头和视频数据

    实际上,按一定速度读取摄像头视频图像后,便可以对图像进行各种处理了. 那么获取主要用到的是VideoCapture类,一个demo如下: //如果有外接摄像头,则ID为0,内置为1,否则用0就可以表示内置摄像头 cv::VideoCapture cap(0); //判断摄像头是否打开 if(!cap.isOpened()) { return -1; } cv::Mat myframe; cv::Mat edges; bool stop = false; while(!stop) { //获取当前

  • 实现opencv图像裁剪分屏显示示例

    使用OPENCV图像处理库,将图片裁剪分屏显示 复制代码 代码如下: //#include "stdafx.h"#include <opencv2/opencv.hpp> //#include <opencv2/imgproc/imgproc.hpp>//#include <opencv2/highgui/highgui.hpp>#include <iostream>#include <vector>using namespa

  • opencv实现定时录像功能

    opencv作为一款强大的机器视觉库,以其简便性得到了各图像处理开发人员的青睐.现在就给大家介绍如何用opencv实现定时录像并以实际时间作为文件名保存.之前网上已经有一些类似的代码,但是大多数网友反映程序无法执行,主要分析有两个原因.电脑上未安装视频编码器,这里推荐大家XviD,网上不好下载可以私信我或是留下邮箱,我统一发送.然后在选择编码格式上,我选择的是'X', 'V', 'I', 'D'格式,也就是我们常见的avi格式. #include "cv.h" #include &qu

  • 利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统

    基于python opencv人脸识别的签到系统前言先看下效果实现的功能开始准备页面的构建功能实现代码部分总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人脸实时签到系统,作者某二本大学里的末流学生,写于2019/09/,python学习期间. 今年7月份开始接触python的,最近闲着无事就开始做了这个人脸识别的系统,一开始的话就想着简单的弄下,就去了百度智能云用的api接口实现的,写完以后我就想为什么我不自己写一个人脸识别签到,不去调用百度api接口,然后就诞生了

  • 聊一聊OpenCV相机标定

    相机标定:简单的说,就是获得相机参数的过程.参数如:相机内参数矩阵,投影矩阵,旋转矩阵和平移矩阵等 什么叫相机参数? 简单的说,将现实世界中的人.物,拍成一张图像(二维).人或物在世界中的三维坐标,和图像上对应的二维坐标间的关系.表达两种不同维度坐标间的关系用啥表示?用相机参数. 相机的成像原理 先来看一下,相机的成像原理: 如图所示,这是一个相机模型.将物体简化看成一个点.来自物体的光,通过镜头,击中图像平面(图像传感器),以此成像.d0是物体到镜头的距离,di时镜头到图像平面的距离,f是镜头

  • python定时截屏实现

    写在前面 因为暂时还没有想好做什么具体的某个项目来提升对python的理解,所以就自己想着做一下小玩意来加强一下自己对一些库和方法的理解 分析 1.截屏 截屏的话有pillow这个模块,并且就两条语句,后面会看到 2.定时任务 定时的话涉及到时间,所以会引入time这个模块 3.保存 保存的话因为是会有多个图片,所以需要一个目录来接,这里我就放在了根目录下的png目录下,并且对目录是否存在做了处理 代码 # python3 author jin xiang import time from PI

  • python通过opencv调用摄像头操作实例分析

    实例源码: #pip3 install opencv-python import cv2 from datetime import datetime FILENAME = 'myvideo.avi' WIDTH = 1280 HEIGHT = 720 FPS = 24.0 # 必须指定CAP_DSHOW(Direct Show)参数初始化摄像头,否则无法使用更高分辨率 cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 设置摄像头设备分辨率 cap.set(cv

  • windows下定时利用bat脚本实现ftp上传下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: 可执行bat脚本: @echo off ftp -s:D:\ftp\ftp.txt ftp命令ftp.txt: open 192.168.1.166 ftp-user passwd prompt off lcd D:\ftp cd /home/myftp mget * close open 10.

  • 如何利用DOS批处理实现定时关机操作详解

    一.批处理释义: 批处理(Batch),也称为批处理脚本.它是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,应用于DOS和Windows系统中.批处理文件的扩展名为bat. 目前比较常见的批处理包含两类:DOS批处理和PS批处理.PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本:而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本. 二.编写批处理文件: (1)新建一个文本文件,在里面写上DOS命令语句.然后选择另存为改文

  • Spring整合Quartz实现定时任务调度的方法

    最近项目中需要实现定时执行任务,比如定时计算会员的积分.调用第三方接口等,由于项目采用spring框架,所以这里结合spring框架来介绍. 编写作业类 即普通的pojo,如下: package com.pcmall.task; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TaskA { private static Logger logger = LoggerFactory.getLogger(Ta

  • js实现的定时关闭页面或定时提醒效果代码

    v\:*{behavior:url(#default#vml)} v\:oval,#oDiv{position=absolute;width=200;height=200} #stay{position=absolute;top=70;left=59;color=RED;padding=6;font=900 20/1.3} #input input{border-left=0;border-right=0} Cool Clock 9?'':'_')+per+'%'" style=position

  • Android中AlarmManager+Notification实现定时通知提醒功能

    AlarmManager简介 AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver).本文将讲解一下如何使用AlarmManager实现定时提醒功能. 闹钟配置 周期闹钟 Intent intent = new Intent(); intent.setAction(GlobalValues.TIMER_ACTION_REPEATING); Pendi

随机推荐