1.安装Opencv
1.1 编译
$git clone https://github.com/opencv/opencv.git
$cd opencv/
$git checkout tags/3.2.0
$mkdir build
$cd build/
$cmake ..
$make
1.2 安装
sudo make install
install之后要执行ldconfig,否则程序可能找不到动态库
sudo ldconfig
检查系统当前opencv版本号
pkg-config --modversion opencv
2.打开摄像头
打开摄像头并将视频流写入到视频文件中
#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat src;
// use default camera as video source
VideoCapture cap(0);
// check if we succeeded
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open camera\n";
return -1;
}
// get one frame from camera to know frame size and type
cap >> src;
// check if we succeeded
if (src.empty()) {
cerr << "ERROR! blank frame grabbed\n";
return -1;
}
bool isColor = (src.type() == CV_8UC3);
//--- INITIALIZE VIDEOWRITER
VideoWriter writer;
VideoWriter writerh264;
int codec = CV_FOURCC('M', 'J', 'P', 'G'); // select desired codec (must be available at runtime)
int codech264 = CV_FOURCC('H', '2', '6', '4'); // select desired codec (must be available at runtime)
double fps = 25.0; // framerate of the created video stream
string filename = "./live.avi"; // name of the output video file
string filenameh264 = "./live_h264.avi"; // name of the output video file
writer.open(filename, codec, fps, src.size(), isColor);
writerh264.open(filenameh264, codech264, fps, src.size(), isColor);
// check if we succeeded
if (!writer.isOpened()) {
cerr << "Could not open the output video file for write\n";
return -1;
}
if (!writerh264.isOpened()) {
cerr << "Could not open the output video file for write\n";
return -1;
}
//--- GRAB AND WRITE LOOP
cout << "Writing videofile: " << filename << endl
<< "Press any key to terminate" << endl;
for (;;)
{
// check if we succeeded
if (!cap.read(src)) {
cerr << "ERROR! blank frame grabbed\n";
break;
}
// encode the frame into the videofile stream
writer.write(src);
writerh264.write(src);
// show live and wait for a key with timeout long enough to show images
imshow("Living", src);
int key = cv::waitKey(1);
if(key == 'q')
break;
}
// the videofile will be closed and released automatically in VideoWriter destructor
return 0;
}