树莓派3 B+ 的摄像头简单使用(video-streamer)
一、首先在某东上购买树莓派摄像头
我的买的硬件张这个样子的(CSI接口摄像头):
正视图 后视图

当然我买的不是正版的,价格在50多块钱吧。所以也不算很贵,买回来看看,电路也不算特别的复杂,自己做的话应该也是没有问题的~(注意买回来的摄像头前面都是有一个小的透明薄膜的,但是很影响摄像头的成像效果,用的时候撕掉它,不用的时候可以去掉。)
简单阐述了解CSI接口摄像头参考:http://www.cnblogs.com/lifan3a/articles/5010633.html):
- 全称CMOS Sensor Interface(CSI)
- 前端-配置逻辑接口以便支持大多数通用的可用的CMOS摄像头接口。
- 支持CCIR656视频接口以及传统的摄像头接口。
- 8位数据口,支持方便YCC,YUV,Bayer或者是RGB的数据格式输入。
- 完全可控的8-bit或16-bit数据到32-bit的FIFO进行打包
- 32*32大小的FIFO存储接受到的的图像像素数据,该FIFO可以通过可编程的IO或者是DMA进行读取.
- 后端-提供了直接到eMMA的预处理PrP块接口(PrP和PP组成了MX27图形加速器eMMA,PrP和PP能够用来给视频做预处理和后期处理,例如,放大,缩小,颜色转换)
- 提供sensor的可屏蔽中断源,该中断源也是中断可控的: 开始Frame,结束Frame,Change of Field,FIFO Full
- 提供给外部sensor用的,可配置的主时钟频率
- 由统计数据产生的自动曝光(AE)和自动白平衡(AWB)控制。
二、接下来开始安装驱动使能树莓派的相关模块:
首先使用 ls指令来查看是否加载到了对应的video device设备:
ls -al /etc

所以没有发现我们的设备,接下来要做的是添加摄像头的驱动程序.ko文件和对应的raspiberry B3+的硬件使能问题:
1、添加驱动程序文件进来:
sudo vim /etc/modules
在最后添加如下的代码:
bcm2835-v4l2
这样就完成了在启动过程中加载camera驱动的前提,注意一个问题就是/etc/modules文件的修改权限是super admin所以,记得使用sudo vim /etc/modules.
2、修改Raspberry的启动配置使能项:
sudo raspi-config

得到如下的配置界面:

选择Interfacing Option,选中Select然后Enter进入,如下图所示:

接下来机会问你是否同意使能Pi camera,选择是然后会让你重启,,重启就好了:
选择 “是”
3、重启完之后,我们的基本的操作就完成了,下来来看看/dev下面是否存在摄像头设备的问题:
ls -al /dev/ | grep video
好得,没问题了,找到了我们想要的看到的设备:video0 device
注:可能提示这样的问题(如果在以上工作都完成的情况下,摄像头还是不能正常的使用或者驱动,请先检查硬件的连接的问题,可能是排线没有很好的插稳,或者是摄像头本身的问题。):
mmal mmal_vc_component_create failed to create component 'vc ril camera' (1:ENOMEM)
mmal mmal_component_create_core could not create component 'vc ril camera' (1) mmal Failed to create camera component
mmal main Failed to create camera component
mmal Camera is not detected. Please check carefully the camera module is installed correctly
上面的问题参考这里:http://blog.sina.com.cn/s/blog_e4008c660101hkd9.html
三、下面简单的使用操作树莓派的摄像头:
1、我们使用rapistill指令来截图(当你在运行此指令的时候,树莓派上的指示灯会亮哦~):
raspistill -o image.jpg

采集的效果如下所示:
这里我们看到采集的图片的大小是2592X1944=5038848大约就是500W的像素了。看起来也是非常的清晰啦~确实很满意的啊!!

这里讲一下raspistill命令的相关参数和实验的具体效果:
-v:调试信息查看
-w:图像宽度
-h:图像高度
-rot:图像旋转角度,只支持 0、90、180、270 度(这里说明一下,测试发现其他角度的输入都会被转换到这四个角度之上)
-o:图像输出地址,例如image.jpg,如果文件名为“-”,将输出发送至标准输出设备
-t:获取图像前等待时间,默认为5000,即5秒
-tl:多久执行一次图像抓取
执行下面的指令:
raspistill -o image%d.jpg -rot -w -h -t -tl -v

接着下面就会输出一系列的捕获的信息,
如图片的大小
,
图片的总捕获时间
,
图像是否旋转,
是否水平反转垂直反转:
下面是最后的捕获的结果:

注:这里解释一下图片的采集数量和-t参数以及-tl参数的相关关系:N_Picture = -t(获取图像前等待时间)/-tl(多久执行一次抓取时间) + 1。所以有20000/5000+1 = 5张图片
2、使用raspivid指令来生成.h246的文件
raspivid -o mykeychain.h264 -t -w -h
这样就会在当前文件夹下面生成mykeychain.h264的文件:

如果你想改变拍摄时长,只要通过 "-t" 选项来设置你想要的长度就行了(单位是毫秒)。
如果你想改变图像的分辨率,使用 "-w" 和 "-h" 选项将分辨率降为 1280x720等等。
四、使用VLC等来实现http的视屏流传输:
1、首先需要在你的树莓派上面安装VLC的软件
sudo apt-get update
sudo apt-get install vlc --fix-missing
sudo apt-get install vlc
2、启动你的树莓派摄像头
sudo raspivid -o - -rot -t -fps |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
3、打开你PC机电脑上的VLC软件,选择打开网络串流(Ctrl+N),输入上面指令的端口号以及对应的树莓派的IP地址
(如下图所示我的树莓派的IP地址是192.168.1.129),运行结果如下图所示,当然也发现http的视频流的确比较卡,当然我采用的视频的画质是500W像素的画质,所以视频的质量比较差,当我将视频的画质调节到720*360时,感觉非常的流畅。(@局域网测试环境)
http://192.168.1.129:8080

后续在使用Python Opencv来控制调用树莓派的摄像头做些有意思的东西~
五、使用Raspiberry自带的摄像头python接口picamera库+Opencv来控制调用Camera
官网的Document参考:http://picamera.readthedocs.io/en/release-1.13/index.html
可以参考这里的完整教程:https://robocoderhan.github.io/
也可以参考我的另一篇博客:http://www.cnblogs.com/uestc-mm/p/7606855.html
完~
树莓派3 B+ 的摄像头简单使用(video-streamer)的更多相关文章
- 树莓派3 之 USB摄像头安装和使用
需求 如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵).如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头.你可能已经在PC上安装过了.我买的如图的这 ...
- 树莓派安装kali后的简单配置
树莓派可以说是极客的最爱,可以根据不同的需求去做定制. 前文<使用树莓派和kali Linux打造便携式渗透套件>讲了一些使用树莓派的基础,主要侧重于将树莓派当作一个物理后门使用.我则更喜 ...
- 利用树莓派跑python爬虫的简单教程——从无到有
因为学校项目的原因入手了树莓派,到手先折腾了两天,发现网上的教程大都是拿他搭建服务器,mail,或者媒体服务器之类,对于在学校限时的宽带来说有点不太现实,不过低功耗适合一直开着的确启发了我.所以想到拿 ...
- Qt Opencv 在Linux下摄像头简单示例(转)
下面写的文章也许网上也有类似的,但是大多数都没有给出思路及背景,让初学者每次都只能学到一点皮毛,不少知识需要大量搜索零碎地拼凑起来.题外话,虽然现在是碎片化信息时代,但正是这样信息整合能力也显得非常重 ...
- 【智能无线小车系列九】在树莓派上使用USB摄像头
材料准备: 1.树莓派 2.AS 4WD小车 3.WebCam 4.小米移动电源 5.TP—LINK 高增益150MUSB无线网卡 操作流程: 1.将WebCam插上树莓派后,首先要确认树莓派是否支持 ...
- Android Things:树莓派3上手就是这么简单
http://blog.csdn.net/p106786860/article/details/54566620 ——————————————————————————————————————————— ...
- 树莓派:使用OpenCV调用自带的摄像头.
总所周知,树莓派上,调用摄像头的指令有raspistill和raspivid.若要使用opencv对摄像头进行调用,不少人会出现 cvCaptureFromCAM(0)函数无法找到Pi Cam的错误情 ...
- html 通过input video canvas 打开摄像头 定制相机
在机缘巧合之下,了解到用HTML5和javascript调用摄像头来实现拍照功能,今天就把大致原理写下来.页面布局很简单,就是一个input标签,两个HTML5元素video.canvas和一个but ...
- Python实现树莓派摄像头持续录像并传送到主机
关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文读法,树莓派诞生于英国,由"Raspberry Pi 基金会"这个慈善组织注册开 ...
随机推荐
- AndroidTv Home界面实现原理(一)——Leanback 库的使用
接下去应该是梳理一下 Android Tv 主界面实现原理及解析的一个系列博客了,大体上的安排是先介绍 Google 官方提供的 Leanback 库的使用,如何使用该库来实现简单的 Home 界面, ...
- 修改 Pattern代码使 Java 正则表达式支持下划线 '_'
为什么 由于工作是做数据ETL的,很多时候会使用到正则对数据进行提取,但是java的正则中的groupname不支持'_',官方的文档中是这样的: Group name A capturing gro ...
- JS面向对象编程(进阶理解)
JS 面向对象编程 如何创建JS对象 JSON语法声明对象(直接量声明对象) var obj = {}; 使用 Object 创建对象 var obj = new Object(); JS对象可以后期 ...
- Codis分布式锁
近期一项需求需要使用分布式锁,考虑的方案主要有如下两种: zookeeper codis 因为对于zookeeper不是特别熟悉,因此选用了codis,Codis是一个分布式的Redis解决方案,从应 ...
- Windows下配置Nginx
一.今天是2017年1月18日.揣着一种也许叫做冲动的心情,决定以后每天都记录和回顾新涉及的技术,巩固已学到的知识,坚持. 二.回归到今天的技术主题,因为之前对于[反向代理]这种技术充满了好奇,借此机 ...
- 使用Composer安装ThinkPHP5
1.Windows 系统,下载并运行 Composer-Setup.exe. 2.安装compose.PHP采用的是wampserver集成开发环境(这也之后的问题埋下伏笔). 3.然后在命令行下面, ...
- css 弹性盒兼容性写法,直接复制粘贴
看这个定义弹性布局盒子display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; disp ...
- 使用XmlWriter创建XML文件
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml ...
- 从Object和Function说说JS的原型链
ECMAScript规定了两个特殊的内置对象:Object和Function.他们的特殊性在于,他们本身既是对象又是函数,而他们同时也是对象和函数的构造器.这种自己生自己的逻辑显然违反人性,如果还停留 ...
- 团队作业8——Beta 阶段冲刺1st day
一.今日站立式会议照片 二.每个人的工作 (1) 昨天已完成的工作: 今天是冲刺的第一天,昨天完成的是团队成员任务的分配 (2) 今天计划完成的工作: 界面的完善 (3) 工作中遇到的困难: 对于界面 ...