Linux下使用V4L2读取获取拍照(获取静态图像)
- 前端
- Stella981
- 0
#include <linux/videodev2.h>
1. 打开设备
int fd = open("/dev/video0", O_RDWR);
2. 查询设备属性
struct v4l2_capability cap;
ioctl(fd, VIDIOC_QUERYCAP, &cap);
3. 设置图像帧格式和像素大小
struct v4l2_format fmt;
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 480;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG; 使用JPEG格式帧,用于静态图像采集
ioctl(fd, VIDIOC_S_FMT, &fmt);
4. 读取一帧JPEG图像并写入文件
void *buff = malloc(1024 * 1024); 分配缓存足以容纳一帧图像
size = read(fd, buff, 1024 * 1024);
int filefd = open("./capture.jpg", O_RDWR | O_CREAT);
write(filefd, buff, size);
网上读取图像帧示例大多用mmap方式,但对于只读取几张静态图像而言,read方式足以。
句柄close的事儿就不累述了。
免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。