当前位置: 首页> 健康> 母婴 > 网上平面设计培训_深圳seo网络优化公司_数据分析工具_网络营销成功的品牌

网上平面设计培训_深圳seo网络优化公司_数据分析工具_网络营销成功的品牌

时间:2025/8/9 23:26:29来源:https://blog.csdn.net/pyh1322712308/article/details/145752914 浏览次数:1次
网上平面设计培训_深圳seo网络优化公司_数据分析工具_网络营销成功的品牌

使用 ov2640

V4L2 是 Video for linux two 的简称,是 Linux 内核中视频类设备的一套驱动框架,为视频类设备驱动 开发和应用层提供了一套统一的接口规范

使用 V4L2 设备驱动框架注册的设备会在 Linux 系统/dev/目录下生成对应的设备节点文件,设备节点的 名称通常为 videoX

一、主程序

int main(int argc, char *argv[])
{if (2 != argc) {fprintf(stderr, "Usage: %s <video_dev>\n", argv[0]);exit(EXIT_FAILURE);}/* 初始化LCD */if (fb_dev_init())exit(EXIT_FAILURE);/* 初始化摄像头 */if (v4l2_dev_init(argv[1]))exit(EXIT_FAILURE);/* 枚举所有格式并打印摄像头支持的分辨率及帧率 */v4l2_enum_formats();v4l2_print_formats();/* 设置格式 */if (v4l2_set_format())exit(EXIT_FAILURE);/* 初始化帧缓冲:申请、内存映射、入队 */if (v4l2_init_buffer())exit(EXIT_FAILURE);/* 开启视频采集 */if (v4l2_stream_on())exit(EXIT_FAILURE);/* 读取数据:出队 */v4l2_read_data();       //在函数内循环采集数据、将其显示到LCD屏exit(EXIT_SUCCESS);
}

二、函数编写

2. 初始化摄像头

3. 枚举所有格式

4.  打印摄像头支持的分辨率及帧率

5. 设置格式和流参数 

6. 初始化帧缓冲

 

7.  开启视频采集

ioctl(int fd, VIDIOC_STREAMON, int *type); //开启视频采集 
ioctl(int fd, VIDIOC_STREAMOFF, int *type); //停止视频采集 
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

8. 读取数据

出队

ioctl(int fd, VIDIOC_DQBUF, struct v4l2_buffer *buf); 
// 数据处理完之后、再入队、往复
ioctl(v4l2_fd, VIDIOC_QBUF, &buf);

 

9. 结束视频采集

enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (0 > ioctl(fd, VIDIOC_STREAMOFF, &type)) { perror("ioctl error"); return -1; 
} 

三、测试

交叉编译上述代码,通过 nfs 挂载到 指定目录下。

加载 ov2640 驱动后,运行程序并指定设备:

 

关键字:网上平面设计培训_深圳seo网络优化公司_数据分析工具_网络营销成功的品牌

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: