(Linux下V4L2相关头文件所在路径为/内核源码目录/include/linux/videodev2.h,V4L2相关API文档可查看链接https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/v4l2.html)
摄像头(相机)常见参数:
白平衡(自动白平衡AWB)及色温、曝光(自动曝光AE、曝光补偿EV)、亮度、对比度、饱和度、色度(色调+饱和度)、锐度(也叫清晰度)、背光补偿(也叫逆光补偿)、增益、对焦等
(注:不同摄像头开放的参数不一致,需提前确认该款摄像头的可调参数,未开放的参数是无法调整的!!!)
上述参数涵义如有不懂,可自行维基百科https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5和百度词条https://baike.baidu.com/item/科普。
常见的 ioctl 命令:
VIDIOC_QUERYCAP /* 获取设备支持的操作 */
VIDIOC_G_FMT /* 获取设置支持的视频格式 */
VIDIOC_S_FMT /* 设置捕获视频的格式 */
VIDIOC_REQBUFS /* 向驱动提出申请内存的请求 */
VIDIOC_QUERYBUF /* 向驱动查询申请到的内存 */
VIDIOC_QBUF /* 将空闲的内存加入可捕获视频的队列 */
VIDIOC_DQBUF /* 将已经捕获好视频的内存拉出已捕获视频的队列 */
VIDIOC_STREAMON /* 打开视频流 */
VIDIOC_STREAMOFF /* 关闭视频流 */
VIDIOC_QUERYCTRL /* 查询驱动是否支持该命令 */
VIDIOC_G_CTRL /* 获取当前命令值 */
VIDIOC_S_CTRL /* 设置新的命令值 */
VIDIOC_G_TUNER /* 获取调谐器信息 */
VIDIOC_S_TUNER /* 设置调谐器信息 */
VIDIOC_G_FREQUENCY /* 获取调谐器频率 */
VIDIOC_S_FREQUENCY /* 设置调谐器频率 */
参数控制相关函数及结构体:
函数:ioctl(fd,VIDIOC_QUERYCAP,struct v4l2_streamparm *argp);
作用:查询设备能力
struct v4l2_capability {
__u8 driver[16]; /* i.e. "bttv" */
__u8 card[32]; /* i.e. "Hauppauge WinTV" */
__u8 bus_info[32]; /* "PCI:" + pci_name(pci_dev) */
__u32 version; /* should use KERNEL_VERSION() */
__u32 capabilities; /* Device capabilities */
__u32 reserved[4];
};栗子: