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
|