Opencv 打开笔记本摄像头

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;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值