2.使用树梅派进行视频录制
2016-07-25 21:23
399 查看
条件: 树梅派安装opencv和免驱动的摄像头
c源码:
脚本
capture-video-from-camera-using-opencv.sh
c源码:
#include <iostream> #include "opencv.hpp" /** * 一个程序捕获USB摄像头和视频保存一个文件使用OpenCV。 */ using namespace std; using namespace cv; int main(int argc, char **argv) { if (argc < 2) { cout << "Usage: ./video_capture output_video_file_name\n" << endl; return 1; } string outputVideoFile = argv[1]; //输出的视频文件的路径 VideoCapture videoCapture(0); //初始化结构体,用于捕获摄像入视频 0为默认的摄像头 if (!videoCapture.isOpened()){ cout << "Failed to open the default camera" << endl; return 1; } /* 获取视频帧的宽度和高度 */ double frameWidth = videoCapture.get(CV_CAP_PROP_FRAME_WIDTH); double frameHeight = videoCapture.get(CV_CAP_PROP_FRAME_HEIGHT); cout << "Frame size is [" << frameWidth << "x" << frameHeight << "]" << endl; /* 创建一个VideoWriter的对象将视频流写入文件 */ Size frameSize(static_cast<int>(frameWidth), static_cast<int>(frameHeight)); /* videoWriter(输出的文件名,输出文件的编码,帧率,帧的尺寸,是否是彩色(尽支持win)) */ //('D', 'I', 'V', 'X') mp4 VideoWriter videoWriter(outputVideoFile.c_str(), CV_FOURCC('D', 'I', 'V', 'X'), 10, frameSize, true); if (!videoWriter.isOpened()) { cout << "Failed to initialize the VideoWriter" << endl; return 1; } while (true) { Mat frame; if (!videoCapture.read(frame)) { // 抓住,解码并返回下一个视频帧 cout << "Failed to read a video frame" << endl; break; } videoWriter.write(frame); // 写入文件的框架 if (27 == waitKey(30)) { // 等待按下“ESC”键(注意:不是工作如果没有窗口被创建!) cout << "ESC key pressed, stop capturing video" << endl; break; } } return 0; }
脚本
capture-video-from-camera-using-opencv.sh
#!/bin/bash # A script to invoke a C program to capture video from USB camera & save to a file using OpenCV. CURRENT_DIR=`dirname "$0"` WORKING_HOME=`cd "$CURRENT_DIR"; pwd` SOURCE_FILE=$WORKING_HOME/video_capture.cpp COMPILED_BIN=$WORKING_HOME/video_capture OUTPUT_VIDEO_FILE=$WORKING_HOME/webcam.avi rm -f $OUTPUT_VIDEO_FILE # compile the source code if the executable bin not exists if [ ! -f $COMPILED_BIN ]; then echo "Compiling $SOURCE_FILE ..." g++ -I/usr/include/opencv2/ `pkg-config --cflags opencv --libs opencv` $SOURCE_FILE -o $COMPILED_BIN if [ $? -ne 0 ]; then echo "Failed to compile $SOURCE_FILE" exit 1 fi fi # run the program echo "Start capturing video & save to file $OUTPUT_VIDEO_FILE ..." $COMPILED_BIN $OUTPUT_VIDEO_FILE
相关文章推荐
- CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
- 个人主页
- CSS预处理技术总结(一)Less
- 利用XShell上传、下载文件(使用sz与rz命令),超实用!
- Rails(栈)
- python 学习(五) While 循环语句
- 我的Android进阶之旅------>解决Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal.g
- <实训|第六天>偷偷让新手的Linux无限重启附linux主机名称不是随便乱改的!
- iOS runloop 创建一个和App生命周期相同的线程
- 选择排序
- 欢迎使用CSDN-markdown编辑器
- JAVA之多线程入门和自动滚轮
- POJ1328贪心算法
- poj 2586 Y2K Accounting Bug
- 看病要排队
- Perl学习笔记(3)----遍历哈希表的一个容易疏忽的地方
- 2016多校联合第二场
- mysql主从复制(二)之原理篇
- Android MaterialProgressDrawable类
- java.net.MalformedURLException: no protocol 可能的解决方法