Linux下OpenCV摄像头录像(c++)

Posted XXX_UUU_XXX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下OpenCV摄像头录像(c++)相关的知识,希望对你有一定的参考价值。

opencv 从摄像头中读取视频并保存(c++版)_YouthDance-CSDN博客_opencv 保存摄像头视频

 参考如上

CMakeLists.txt

# cmake版本
cmake_minimum_required(VERSION 2.8.3) 
# c++ 11
set(CMAKE_CXX_FLAGS "-std=c++11")
# 项目名
project(test_opencv)
# 使用OpenCV
find_package(OpenCV REQUIRED)
# 添加头文件
include_directories($OpenCV_INCLUDE_DIRS)
# 查找指定目录下的所有源文件,然后将结果存进指定变量名。语法:
# aux_source_directory(<dir> <variable>)
# 查找当前目录下的所有源文件
# 并将名称保存到SRC_LIST变量
aux_source_directory(. SRC_LIST)
# 生成可执行文件
add_executable(test_opencv $SRC_LIST)
# 生成可执行文件后,为生成文件target添加库
target_link_libraries(test_opencv $OpenCV_LIBS)

test_opencv.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;

int main()

    // 视频保存位置
    string outputVideoPath = "./test.avi";  

    // 打开摄像头
    VideoCapture capture0(0);  

    VideoWriter outputVideo;
    
    // 获取摄像机帧率
    int fps = capture0.get(CAP_PROP_FPS);  

    // 获取当前摄像头的视频信息
    cv::Size S = cv::Size((int)capture0.get(CV_CAP_PROP_FRAME_WIDTH),
                          (int)capture0.get(CV_CAP_PROP_FRAME_HEIGHT));
    // 打开视频路径,设置基本信息 open函数中你参数跟上面给出的VideoWriter函数是一样的
    outputVideo.open(outputVideoPath, CV_FOURCC('X', 'V', 'I', 'D'), fps, S, true);

    if (!outputVideo.isOpened()) 
        cout << "fail to open!" << endl;
        return -1;
    

    // 图片帧
    cv::Mat frameImage;
    int count = 0;

    while(true)
        // 读取当前帧
        capture0 >> frameImage;
        if(frameImage.empty()) break;
        ++count;
        // 输出当前帧
        cv::imshow("output", frameImage);
        // 保存当前帧
        outputVideo << frameImage;
        if (char(waitKey(1)) == 'q') break;
    
	return 0;

执行:

  • cmake .
  • make
  • ./test_opnecv
  • 生成录像视频test.avi

以上是关于Linux下OpenCV摄像头录像(c++)的主要内容,如果未能解决你的问题,请参考以下文章

树莓派简单摄像头录像并保存视频文件

C++利用opencv实现单目测距

求C++调用opencv设置获取摄像头图像大小的方法

Opencv保存摄像头视频

大华录像机无访问权限设置方法

opencv for android 如何实现后台启动摄像头,不显示预览界面