主题 : V4L2 USB 摄像头 代码,带SDL界面, 带网络, 可运行于开发板 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 6350
精华: 2
发帖: 110
金钱: 895 两
威望: 486 点
贡献值: 2 点
综合积分: 260 分
注册时间: 2009-05-29
最后登录: 2016-10-11
楼主  发表于: 2012-07-10 14:03

 V4L2 USB 摄像头 代码,带SDL界面, 带网络, 可运行于开发板

V4L2 代码, 带SDL界面,请确保安装了SDL库。
也可以不带SDL界面,请根据main.h中的提示修改。不带SDL界面的程序可以运行在开发板上。

本程序还带有网络功能,可以通过客户端软件查看。客户端软件由QT4.8编写,请安装最新的QTSDK。

至于摄像头的选取,最好是免驱摄像头。

[attachment=4209]   [attachment=4208]
附件设置隐藏,需要回复后才能看到
级别: 新手上路
UID: 123291
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2016-03-08
最后登录: 2018-05-23
1楼  发表于: 2017-10-20 15:18
kakan
级别: 新手上路
UID: 123291
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2016-03-08
最后登录: 2018-05-23
2楼  发表于: 2017-12-11 14:50
请教您一个问题,我用您的v4l2.h和v4l2.cpp文件,移植到Qt环境下实现了摄像头的显示:
初始化:      
        vd.dev = "/dev/video0";
        v4l2_open(&vd);
        v4l2_init(&vd);
        v4l2_enable(&vd);
        v4l2_default(&vd);
        v4l2_grab(&vd);
        yuv422_888(vd.frameRGB, vd.framebuffer, vd.width, vd.height);
        QImage image(vd.frameRGB,640,480,QImage::Format_RGB888);
        ui->camera->setPixmap(QPixmap::fromImage(image));

循环:
    v4l2_grab(&vd);
    yuv422_888(vd.frameRGB, vd.framebuffer, vd.width, vd.height);
    QImage image(vd.frameRGB,640,480,QImage::Format_RGB888);
    ui->camera->setPixmap(QPixmap::fromImage(image));
关闭摄像头:
    v4l2_disable(&vd);
    v4l2_destroy(&vd);

这都没问题,但是我关闭摄像头之后,再次打开则出现Segmentation fault错误,这是什么原因呢?难道关闭摄像头关闭的不彻底?