材料准备:

1、树莓派

2、AS 4WD小车

3、WebCam

4、小米移动电源

5、TP—LINK 高增益150MUSB无线网卡

操作流程:

1.将WebCam插上树莓派后,首先要确认树莓派是否支持该设备。输入:

pi@raspberrypi ~$ lsusb

  在返回的信息中,我们可以看到“Logitech, Inc.WebCam C270”的信息,说明该视频摄像头摄像头已经被树莓派操作系统成功识别。一般来说,只要在官方兼容列表中的设备,都能够被树莓派成功识别。此外,我们在返回的消息中,还可以看到键鼠、无线网卡的相关信息。

2、测试实时视频

  luvcvew可以用来查看WebCam的视频信息,它包含了一个mjpeg的编码器,能够将视频流保存为AVI格式的文件。mjpeg的压缩效率并不高,且对带宽拥有较高要求,因而从今天来看,它并非一款理想的视频压缩技术。

安装luvcvew:

pi@raspberrypi ~$ sudo apt-get install luvcview

  输入下面的指令,让系统帮助我们找到luvcview在哪里。正常情况下,系统应该返回“/usr/bin/luvcview”,如果系统没有返回,再重新检查一下该插件是否已经安装妥当。

pi@raspberrypi ~$ which luvcview  

  luvcview需要工作在桌面环境中,即Raspbian的LXDE中。luvcview默认采用640像素*480像素的分辨率进行视频采集,在实际应用中,我们发现如果采用这一分辨率,树莓派内存吃紧,卡顿的情况比较严重,因此我们需要降低WebCam采集的分辨率为320像素*240像素,在LXDE(LXTerminal)中:

pi@raspberrypi ~$ luvcview -s 320x240

  执行完成之后,桌面上会弹出一个窗口,用来播放WebCam的视频信号。此时,我们再来观察一下桌面右上角CPU的使用情况,发现几乎已经全部被占用了,当然这也已经是在320像素*240像素分辨率的设置下,如果再调高分辨率,估计系统会返佣更慢。

3、测试拍照

  在桌面环境下,本身就要耗费许多资源,实际上,Linux下许多图形、图像还是可以跑在Shell下的,下面我们就演示在Shell中调用摄像头进行拍照。需要使用另一个小工具——uvccapture。

安装uvccapture:

pi@raspberrypi ~$ sudo apt-get install uvccapture

开始拍照:

像素标准1:960*720

pi@raspberrypi ~$ uvccapture -B120 -C40 -S30 -x960 -y720 -ocamera.jpg

  uvccapture携带的参数较多,其中,“-x,-y”为图像分辨率,“-B”为亮度(Brightness),"-C"为对比度(Contrast),“-S”为饱和度(Saturation),"-o"输出图像文件路径,"camera.jpg"为保存的照片文件名,默认保存在"/home/pi"目录下。

  当水平图像分辨率(x)超过960像素时,当垂直图像分辨率(y)超过720像素时,还需要使用YUYV方式进行拍照,此时相比于上述方式,除了需要修改像素参数意外,还要额外增加一个参数“-m”。

像素标准2:1280*720

pi@raspberrypi ~$ uvccapture -B120 -C40 -S30 -x1280 -y720 -m -ocamera.jpg

测试效果:

【智能无线小车系列九】在树莓派上使用USB摄像头的更多相关文章

  1. 【智能无线小车系列十】通过USB摄像头实现网络监控功能

    如果仅有静态图像可能还不足以满足我们的需求,我们可能会需要用到实时的监控功能.这里介绍一款小应用:motion.motion的功能可强大了,不仅可以将监控的画面通过视频传输,实时展现,更为强大的是,m ...

  2. 【智能无线小车系列八】在树莓派上使用USB网卡

    在这个腾“云”驾“物”(云:云计算,物:物联网)的时代,什么都可以没有,就是不能没有网络,树莓派也离不开它.本章节将详细介绍如何将树莓派接入互联网,因为有一些后期将要使用到的小软件需要联网进行下载和安 ...

  3. 树莓派3 之 USB摄像头安装和使用

    需求 如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵).如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头.你可能已经在PC上安装过了.我买的如图的这 ...

  4. BootStrap 智能表单系列 九 表单图片上传的支持

    本章介绍如何在生成表单后,可以支持上传图片后可以及时预览图片 代码如下(连接地址:https://github.com/xiexingen/Bootstrap-SmartForm/blob/maste ...

  5. Kali-linux在树莓派上破解无线网络

    大部分的命令可以正常的运行在BackTrack5或Kali上.在Kali上可以实现的无线渗透测试,在树莓派上也可以运行.在第1章中介绍了在树莓派上安装Kali Linux操作系统,下面将介绍在树莓派上 ...

  6. BootStrap 智能表单系列 首页 (持续更新中...)

    背景:本码农.NET后端工程师,在项目开发中发现写了很多重复的代码, 于是自己整了一套根据配置来生成form表单的插件,针对表单的改动仅需要修改配置的json即可 使用中发现还是蛮实用的,于是开源出来 ...

  7. BootStrap 智能表单系列 十 自动完成组件的支持

    web开发中,肯定遇到像百度.google这种搜索的功能吧,那智能表单中的自动完成可以做什么呢,下面来揭晓: 1.包含像google.百度等类似的简单搜索 2.复杂结构的支持,比如说 输入产品编号,需 ...

  8. 用树莓派USB摄像头做个监控

    [前言] 看着阴暗的角落里吃灰噎到嗓子眼的树莓派,一起陪伴的时光历历在目,往事逐渐涌上心头,每每触及此处,内心总会升腾起阵阵怜悯之情... 我这有两个设备,一个是积灰已久的树莓派,另一个是积灰已久的U ...

  9. 基于Arduino开发的智能蓝牙小车

    基于Arduino的智能蓝牙小车 材料准备: Arduino开发板一块.四驱小车底板及相关配件一套.L298N驱动模块一个.HC-05/06蓝牙模块一块,九伏电源一块(用于主板供电).12V锂电池一块 ...

随机推荐

  1. Day 20 迭代器、生成器

    一. 迭代器 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代对象:实 ...

  2. Codeforces 404E: Maze 1D(二分)

    题意:指令“R”机器人会向右走一步,“L”是向左.起初机器人在0位置,可以在除了0以外的任何位置放障碍,如果机器人的指令将使它走到障碍上,那这一步他会保持不动.要求让机器人最终结束的那一步一定只走过一 ...

  3. MinGW 使用和创建 DLL 应注意的问题

    MinGW 是 GCC 的 Windows 版本,稳定版已经到了 4.5.2,功能和性能上很好,感觉不比 Microsoft 自家的 VC 差啊.但是 MinGW 下使用和创建 DLL 倒是要特别注意 ...

  4. js-jquery 中$.ajax -浅显接触

    工作了将近2年,终于开始自己写ajax了!!!真紧张的! 当年培训时就没有学ajax,就让我们自己看看,我是那种主动学习的人吗?不是!!!所以搞不懂ajax!!!!! 在工作中,数据的绑定我们之前都是 ...

  5. SQLite的sqlite_sequence表

    SQLite的sqlite_sequence表   sqlite_sequence表也是SQLite的系统表.该表用来保存其他表的RowID的最大值.数据库被创建时,sqlite_sequence表会 ...

  6. iOS上如何让按钮(UIbutton)文本左对齐展示

    // button.titleLabel.textAlignment = NSTextAlignmentLeft; 这句无效 button.contentHorizontalAlignment = U ...

  7. C# 操作摄像头

    如有雷同,不胜荣幸,若转载,请注明 这个是大众普通方法,鉴于有网友和朋友问相同的问题.在这里将我的拙劣的代码关键部分贴出来.以便帮助很多其它的朋友们,不足之处甚多,我能够学习,交流,请教阁下 废话到此 ...

  8. py3中的文字编码

    Python3 中字符的类型只有两种: str: 编码过的 unicode 文本字符 bytes: 编码前的字节序列

  9. Tomcat服务器改主页 & jeesite框架改首页

    Tomcat服务器改主页: 方法一: 把原来的 ROOT 目录清空: 发布你自己的项目到 ROOT 目录下: 发布程序 /webapps/ROOT/WEB-INF/web.xml 中需要有默认首页定义 ...

  10. JAVA调用命令行2

    package loadMBQL; import java.io.File; import java.io.FilenameFilter; public class LoadMBQL { /** * ...