请扮演一个精通opencv的高手,试写一个使用已有SDK的视频采集代码,并能存储采集的视频,还能够改变它的分辨率(使用visual studio)
时间: 2024-06-12 16:06:52 浏览: 92
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 打开摄像头
VideoCapture cap(0);
if (!cap.isOpened()) {
cout << "无法打开摄像头" << endl;
return -1;
}
// 获取摄像头分辨率
int width = cap.get(CAP_PROP_FRAME_WIDTH);
int height = cap.get(CAP_PROP_FRAME_HEIGHT);
cout << "原分辨率: " << width << " x " << height << endl;
// 设置新分辨率
int new_width = 640;
int new_height = 480;
cap.set(CAP_PROP_FRAME_WIDTH, new_width);
cap.set(CAP_PROP_FRAME_HEIGHT, new_height);
cout << "新分辨率: " << new_width << " x " << new_height << endl;
// 定义视频编码格式
int fourcc = VideoWriter::fourcc('M', 'J', 'P', 'G');
// 创建视频文件
VideoWriter writer("output.avi", fourcc, 25, Size(new_width, new_height));
// 开始采集并存储
while (true) {
Mat frame;
cap.read(frame);
if (frame.empty()) break;
writer.write(frame);
imshow("Video", frame);
if (waitKey(1) == 27) break; // 按下ESC键退出
}
// 释放资源
cap.release();
writer.release();
destroyAllWindows();
return 0;
}
阅读全文