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() # 查找当前目录下的所有源文件 # 并将名称保存到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#include 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)