Linux下使用V4L2读取获取拍照(获取静态图像)
2014-10-22 11:53
489 查看
#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的事儿就不累述了。
相关文章推荐
- Linux下使用V4L2读取获取拍照(获取静态图像)
- 使用Linux的V4L2读取摄像头数据+Opencv图像处理
- 使用相机拍照获取图片后 有时候图像显示旋转
- 使用webcam 直接从内存获取图像 非读取ClipBoard或者File.
- Linux上获取指定进程的cpu使用情况
- Java通过调用Top命令获取Linux的CPU和内存使用情况
- Linux静态/动态链接库的创建和使用
- 使用IPicture的OLE实现读取和显示BMP,GIF,JPG,ICO,EMF,WMF图像
- 使用C#从数据库读取图像二进制流的代码
- (转)在C#中使用WIA获取扫描仪数据(四、通过编程方式扫描图像)
- 使用 Unity(二):配置 Unity 、读取配置信息和获取对象
- 在Linux控制台下使用libjpeg显示JPEG图像在framebuffer上
- 在Linux控制台下使用libjpeg显示JPEG图像在framebuffer上
- linux下使用系统调用读取文件中的路径
- 在linux上php函数fgetcsv获取数据异常的解决(读取gbk数据乱码)
- Linux下如何使用光驱及读取非linux分区等
- linux链接库(动态/静态)的使用详解
- Linux静态/动态链接库的创建和使用
- 使用 XML 静态读取网页
- 使用 Unity(二):配置 Unity 、读取配置信息和获取对象