关于linux命令pict的信息( 七 )


int audios;
int maxwidth;
int maxheight;
int minwidth;
int minheight;
};capability结构它包括了视频设备的名称,频道数,音频设备数,支持的最大最小宽度和高度等信息 。
struct video_picture
{
__u16brightness;
__u16hue;
__u16colour;
__u16contrast;
__u16whiteness;
__u16depth;
__u16palette;
}picture结构包括了亮度,对比度,色深 , 调色板等等信息 。头文件里还列出了palette相关的值,这里并没有给出 。
了解了以上也就了解了这两个简单函数的作用,现在我们已经获取到了相关视频设备的capabilty和picture属性 。
这里直接给出另外一个函数
int v4l_get_mbuf(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGMBUF ,(vd-mbuf))0) {
perror("v4l_get_mbuf:");
return -1;
}
return 0;
}
int v4l_get_mbuf(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGMBUF ,(vd-mbuf))0) {
perror("v4l_get_mbuf:");
return -1;
}
return 0;
}
对于结构体video_mbuf在v4l中的定义如下 , video_mbuf结构体是为了服务使用mmap内存映射来获取图像的方法而设置的结构体,通过这个结构体可以获得摄像头设备存储图像的内存大小 。具体的定义如下,各变量的使用也会在下文详细说明 。
struct video_mbuf
{
intsize;可映射的摄像头内存大小
intframes;摄像头可同时存储的帧数
intoffsets[VIDEO_MAX_FRAME];每一帧图像的偏移量
};
下面完成第3步按照需要更改设备的相应设置,事实上可以更改的设置很多,本文以更改picture属性为例说明更改属性的一般方法 。
那么我们就完成extern int v4l_set_picture(v4l_device *, int, int, int, int, int,);这个函数吧
int v4l_set_picture(v4l_device *vd,int br,int hue,int col,int cont,int white)
{
if(br) vd-picture.brightnesss=br;
if(hue) vd-picture.hue=hue;
if(col) vd-picture.color=col;
if(cont) vd-picture.contrast=cont;
if(white) vd-picture.whiteness=white;
if(ioctl(vd-fd,VIDIOCSPICT,(vd-picture))0)
{perror("v4l_set_picture: ");return -1;}
return 0;
}
int v4l_get_mbuf(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGMBUF ,(vd-mbuf))0) {
【关于linux命令pict的信息】perror("v4l_get_mbuf:");
return -1;
}
return 0;
}
对于结构体video_mbuf在v4l中的定义如下 , video_mbuf结构体是为了服务使用mmap内存映射来获取图像的方法而设置的结构体,通过这个结构体可以获得摄像头设备存储图像的内存大小 。具体的定义如下,各变量的使用也会在下文详细说明 。
struct video_mbuf
{
intsize;可映射的摄像头内存大小
intframes;摄像头可同时存储的帧数
intoffsets[VIDEO_MAX_FRAME];每一帧图像的偏移量
};
下面完成第3步按照需要更改设备的相应设置,事实上可以更改的设置很多,本文以更改picture属性为例说明更改属性的一般方法 。
那么我们就完成extern int v4l_set_picture(v4l_device *, int, int, int, int, int,);这个函数吧
int v4l_set_picture(v4l_device *vd,int br,int hue,int col,int cont,int white)
{
if(br) vd-picture.brightnesss=br;
if(hue) vd-picture.hue=hue;
if(col) vd-picture.color=col;
if(cont) vd-picture.contrast=cont;
if(white) vd-picture.whiteness=white;
if(ioctl(vd-fd,VIDIOCSPICT,(vd-picture))0)
{perror("v4l_set_picture: ");return -1;}
return 0;
}
上述函数就是更改picture相关属性的例子,其核心还是v4l给我们提供的ioctl的相关调用,通过这个函数可以修改如亮度,对比度等相关的值 。
如何利用Video4Linux获取摄像头数据 1. 摄像头的安装

推荐阅读