基于v4l2的uvc摄像头视频采集显示,并保存成视频
时间: 2024-06-12 13:03:50 浏览: 252
USB摄像头通过v4l2技术采集、储存视频
4星 · 用户满意度95%
1. 首先需要安装v4l2和uvc驱动,在终端中输入以下命令:
```
sudo apt-get install v4l-utils uvcdynctrl
```
2. 然后使用v4l2-ctl命令查看摄像头设备的信息,例如:
```
v4l2-ctl --list-devices
```
3. 接下来,使用v4l2-ctl命令设置摄像头的参数,例如分辨率、帧率等。
```
v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=YUYV --set-parm=30
```
4. 接着,使用OpenCV库来进行视频采集和显示,代码示例如下:
```
#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0); //打开摄像头
if(!cap.isOpened()) //检查摄像头是否成功打开
{
cout << "Error opening camera" << endl;
return -1;
}
int fps = 30; //设置帧率
cap.set(CAP_PROP_FRAME_WIDTH, 640); //设置分辨率
cap.set(CAP_PROP_FRAME_HEIGHT, 480);
cap.set(CAP_PROP_FPS, fps);
namedWindow("Video", WINDOW_NORMAL); //创建窗口
VideoWriter writer("output.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, Size(640, 480)); //创建视频写入器
while(true)
{
Mat frame;
cap >> frame; //采集一帧图像
imshow("Video", frame); //显示图像
writer.write(frame); //将图像写入视频文件
char c = waitKey(1);
if(c == 27) //按下ESC键退出循环
{
break;
}
}
cap.release(); //释放摄像头
writer.release(); //释放视频写入器
destroyAllWindows(); //关闭窗口
return 0;
}
```
5. 最后编译并运行代码,即可进行视频采集和显示,并将采集到的视频保存成output.avi文件。
```
g++ -o main main.cpp `pkg-config opencv --cflags --libs`
./main
```
阅读全文