• 在linux下玩转usb摄像头


    硬件平台:PC机一台 、usb摄像头

    操作系统:Linux3.0.8

    交叉编译环境:arm-none-Linux-gnueabi-gcc  4.5.1

    调试步骤:

    一、linux 内核解压

    1.1使用linux-3.0.8-FS210_v8.tar.xz内核,将这个内核压缩包拷贝到虚拟机的linux系统上

    1.2 执行 tar –xvf linux-3.0.8-FS210_v8.tar.xz,得到内核(用来产生镜像文件,烧进 s5pv210 开发板上)

    1.3 解压之后,进入 linux-3.0.8-FS210_v8 内核,修改该目录下的 makefile,并配置相应的 make menuconfig,如下:

    修改 Makefile

    Make menuconfig

    1.3.1 usb 驱动添加

    Device Drivers --->

    SCSI device support ---> 

    <*> SCSI disk support

    <*> SCSI generic support 

    <*> SCSI media changer support

    [*] USB support --->

    <*> USB Mass Storage support

    1.3.2 添加驱动(video)

    Device Drivers --->

    <*> Multimedia support ---> 

    <*> Video For Linux

    [*] Video capture adapters --->

    [*] V4L USB devices --->

    <*> USB Video Class (UVC)

    [*] UVC input events device support

    1.4 执行 make zImage –j2,报如下错误:

    修改这个文件

    修改为

    继续编译最后出现

    1.5 拷贝镜像到相应的目录下

    开发板通过 tftp,下载虚拟机上的镜像,所以执行

    cp zImage /tftpboot/

    二、抓拍代码的移植

    2.1用 arm-none-linux-gnueabi-gcc,编译该文件

    2.1.1 虚拟机上编译 arm-none-linux-gnueabi-gcc 1.c -o 1,

    编译之前,需修改 应用程序.c文件中的设备节点,默认是/dev/video3。

    2.1.2 拷贝可执行文件到开发板的根文件系统某目录下(本实验,使用 nfs服务,给板子提供文件系统)

    比如 cp 1 /opt/rootfs/drv(/opt/rootfs为虚拟机提供给开发板

    根文件系统,drv为我自己创建的目录)

    2.1.3 开发板成功和虚拟机连上后,连接好摄像头,进入到用于抓拍的可执行文件的目录,执行./1,会在该目录下生成对应的图片,默认抓拍

    12张。示例:

    三、流媒体的移植

    3.1jpeg 库的移植

    jpeg 源码包通过下面这个网址下载http://www.ijg.org/files/jpegsrc.v8b.tar.g

    解压源码包

    tar xvf jpegsrc.v8b.tar.gz 

    配置源码 cd jpeg-8b

    ./configure --prefix=/home/linux/jpeg --host=arm -none-linux-gnueabi

    (./configure 配置源代码树)

    安装目录:

    --prefix=PREFIX

    体系无关文件的顶级安装目录 PREFIX,也就Apache的安装目录。

    [/usr/local/apache2]

    系统类型:

    --host=HOST

    指定 Apache HTTP 服务器将要运行的目标系统类型 HOST 。

    [BUILD])

    3.2编译

    Make

    3.3安装

    make  install拷贝库到根文件系统中

    cp /home/linux/jpeg /lib/libjpeg.so.8 /opt/rootfs/lib

    3.4 mjpg-stream的移植

    3.4.1  mjpg-stream源码包通过下面这个网址下载

    http://sourceforge.net/projects/mjpg-streamer/ 

    解压源码

    tar  -xvf mjpg-streamer-r63.tar.gz

    mkdir /home/linux/jpeg

    3.4.2 修改源码

    cd mjpg-streamer-r63

    修改顶层 makefile 及 plugins 目录中的各级 makefile 将所有(注意这里需要修改 的内容) CC=gcc 修改为

    修改 plugins/input_uvc/Makfile 

    修改

    CFLAGS += -O2 -DLINUX -D_GNU_SOURCE-Wall -shared -fPIC 

    修改

    $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

     为

    编译

    (make clean)

    make

      mkdir /opt/rootfs/mjpg

      cp *.so /opt/rootfs/mjpg

    cp mjpg-streamer /opt/rootfs/bin

    3.5 运行 mjpg_stream

    mjpg_streamer -i “/mjpg/input_uvc.so –y” -o “/mjpg/output_http.so -w

    192.168.7.156:8080”& (注意:这里是板子的 ip 192.168.7.156)

    浏览器上执行:

    http://192.168.7.156:8080/?action=snapshot (每次回车单张抓拍) 

    或者

    http://192.168.7.156:8080/?action=stream (视频流)

    或者打开 viewer.exe,输入 IP 和端口,点击 Connect 连接,可在下方看到视频流。

    戳阅读原文:零基础总担心能不能行?2周见分晓!

  • 相关阅读:
    明明已经include_once() 但还是报错Class 'XXXXXControllerTOPData' not found
    dell U2515H 2k显示器黑屏问题,dp线问题。
    centos7.4 php5升级到php7
    thinkphp批量插入 更新sql
    查询速度慢了10倍,查询条件类型不对,字符串当做数字类型。
    margin-left:auto;margin-right:auto; 不起作用的原因
    jquery 查找元素,id,class
    php分割url,获取参数query
    阿里云服务器删除日志的方法,查看有哪些大文件
    sql优化 分字段统计查询
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/7237403.html
Copyright © 2020-2023  润新知