需要训练一个神经网络模型,可能需要用到很多视频数据,所以我想把手头的工控机设置为上电自启动,再借助opencv编译一个可执行文件,放在windows开机启动文件夹里,这样只要连接好摄像头和工控机以及电源,一旦工控机通电,自动启动windows,随后自动调用录像,我只要定时去拷数据就可以了。

首先将工控机设置为开机自启动:

我用的工控机为研华工控机,参考这个文档将工控机设置为上电启动。做法:(1)开机按delete,进入BIOS系统;(2)左右选择到chipset>PCIH-IO…(3)将restore ac power loss改为“power on”;(4)保存设置并重启。

然后我在工控机上用VS编译了下面的代码:

 #include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp> using namespace cv;
using namespace std; int main()
{
//open the camera
VideoCapture cap(); if(!cap.isOpened()){
system("pause");
return -;
} //设定帧率
double rate= 20.0;
cout << "Video rate: " << rate << "fps" << endl; Mat frame;
cap>>frame;
imshow("Video",frame); cout<<"Image size: "<<frame.size()<<endl; string filename="Video";
string extension=".avi";
stringstream outputfile;
int digits=; //两分钟一个视频
int num_frame=(int)(rate**); //连续录三个
for(int i=;i<;)
{
outputfile.str("");
outputfile<<filename<<setfill('')<<setw(digits)<<i++<<extension;
VideoWriter writer;
writer.open(outputfile.str(),CV_FOURCC('X', 'V', 'I', 'D'),rate,frame.size()); bool stop(false);
int delay= /rate;
int num=; while (!stop)
{
cap>>frame;
writer.write(frame);
imshow("Video",frame);
num++; //达到指定帧数,停止录像
if(num>num_frame)
{
stop=true;
writer.release();
cout<<"Save "<<outputfile.str()<<endl;
} //按ESC退出录像
if(waitKey(delay)==)
{
stop=true;
writer.release();
cout<<"Save "<<outputfile.str()<<endl;
i=;
} }
} cap.release();
system("pause");
return ; }

得到了.exe可执行文件,并将可执行文件放在了windows的启动文件下,这样就可以了。
windows7的启动文件在哪里

用opencv实现工控机的开机录像的更多相关文章

  1. opencv 操作本地摄像头实现录像

    直接上代码: // demo1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

  2. 项目实战:Qt+Ffmpeg+OpenCV相机程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. ZEDBOARD启动自启配置(加载镜像) 分类: OpenCV ubuntu shell ZedBoard Eye_Detection 2014-11-08 18:53 167人阅读 评论(0) 收藏

    参考:陆书14.2.8 1)备份ramdisk8M.image.gz 2)加载rootfs镜像文件: 3)在镜像目录下建立自己所需文件夹(挂载目录): 我需要的挂载目录有两个: root/qt/ins ...

  4. OpenCV学习 4:摄像头视频读写与边缘检测

    原创文章,欢迎转载,转载请注明出处 想实现人脸识别,车辆识别,车牌识别.一般我们可不是读硬盘里面的视频文件的,都是直接从摄像头读取视频流然后直接识别的.所以读取摄像头的视频流这是基础...OpenCV ...

  5. 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转

    (一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...

  6. 【从零学习openCV】opecv操作像素

    1. 存取像素值 在opencv中能够直接对cv::Mat类型的图像调用at函数读取或赋值某个像素,我们用个简单的案例来说明: //在一张图像上增加椒盐噪声,image为输入图像.n为噪点个数 voi ...

  7. (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  8. OpenCV x64 vs2010 下打开摄像头录制视频写成avi(代码为转载)

    首先参照下面这里进行opencv x64位机器下面的配置 http://wiki.opencv.org.cn/index.php/VC_2010%E4%B8%8B%E5%AE%89%E8%A3%85O ...

  9. 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存

    如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存 ...

随机推荐

  1. js经典应用

    一.js字符串转数字: 1.parseInt()和parseFloat()两个转换函数: 2.强制类型转换,Number(value)——把给定的值转换成数字(可以是整数或浮点数): 3.利用js变量 ...

  2. 中断标志位 IRQF_ONESHOT

    one shot本身的意思的只有一次的,结合到中断这个场景,则表示中断是一次性触发的,不能嵌套.对于primary handler,当然是不会嵌套,但是对于threaded interrupt han ...

  3. python Anaconda

    转载自   https://blog.csdn.net/program_developer/article/details/79677557 目录: Anaconda是什么? 如何安装? 如何管理包? ...

  4. C Programming vs. Java Programming

    Thing C Java type of language function oriented object oriented basic programming unit function clas ...

  5. [Spark Core] Spark 使用第三方 Jar 包的方式

    0. 说明 Spark 下运行job,使用第三方 Jar 包的 3 种方式. 1. 方式一 将第三方 Jar 包分发到所有的 spark/jars 目录下 2. 方式二 将第三方 Jar 打散,和我们 ...

  6. apk静态注射[转]-未实践

    原文:http://free0coding.iteye.com/blog/1684263 1.将需要注入的代码块打包成jar1,释放一个公共类的静态方法a  2.反编译apk得到smali文件,在适当 ...

  7. Windows10下python3.5的sklearn库安装

    具体安装方法参考https://blog.csdn.net/HYDMonster/article/details/79766086 但是注意的是,http://www.lfd.uci.edu/~goh ...

  8. Python datetime.md

    datetime datetime模块包含了一些用于时间解析.格式化.计算的函数. Times 时间值由time类来表示, Times有小时, 分, 秒和微秒属性. 以及包含时区信息. 初始化time ...

  9. Python高级网络编程系列之基础篇

    一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...

  10. oracle 查看删除重复数据

    1.查询重复数据select * from 表名 where 重复字段(一般为主键)in (select 重复字段 from 表名 group by 重复字段 having count(WF_OID) ...