Video4Linux(V4L)使用摄像头的实例基础教程与体会(二)

2014-11-24 08:49:39 ? 作者: ? 浏览: 5
picture(v4l_device *, unsigned int);


extern int v4l_mmap_init(v4l_device *);


extern int v4l_grab_init(v4l_device *, int, int);


extern int v4l_grab_frame(v4l_device *, int);


extern int v4l_grab_sync(v4l_device *);


上述函数会在下文中逐渐完成,功能也会逐渐介绍,虽然现在看起来没什么感觉只能从函数名上依稀体会它的功能,或许看起来很烦,不过看完下文就会好了。



前面已经说过使用v4l视频编程的流程和对文件操作并没有什么本质的不同,大概的流程如下:


1.打开视频设备(通常是/dev/video0)


2.获得设备信息。


3.根据需要更改设备的相关设置。


4.获得采集到的图像数据(在这里v4l提供了两种方式,直接通过打开的设备读取数据,使用mmap内存映射的方式获取数据)。


5.对采集到的数据进行操作(如显示到屏幕,图像处理,存储成图片文件)。


6.关闭视频设备。


知道了流程之后,我们就需要根据流程完成相应的函数。



那么我们首先完成第1步打开视频设备,需要完成int v4l_open(char *, v4l_device *);


具体的函数如下


#define DEFAULT_DEVICE “/dev/video0”


int v4l_open(char *dev , v4l_device *vd)


{


if(!dev)dev= DEFAULT_DEVICE;


if((vd-fd=open(dev,O_RDWR))<0){perror(“v4l_open:”);return -1;}


if(v4l_get_capability(vd))return -1;


if(v4l_get_picture(vd))return -1;//这两个函数就是即将要完成的获取设备信息的函数


return 0


}


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: