chaoz的杂货铺

生命有息、学无止境、折腾不止

0%

树莓派填坑系列

博客资料

创客百科推荐
极客先锋
OpenCV 开发笔记博文导航
物联网 IoT 经验分享小站
树莓派开发笔记
SPtuan的个人实验地

工具

Pi Dashboard (Pi 仪表盘) github项目库

参考项目


趣无尽


自动灌溉系统
用本地网络控制的树莓派摄影云台 Github:https://github.com/Mjrovai/WebCam-Pan-Tilt-Control-via-Flask
基于PHP探针和Python爬虫的服务器监控
Python SQLite插入温度记录


树莓派+Arduino+TensorFlow搭建图像识别小车 :TensorFlow;模型训练
使用树莓派构建一个婴儿监视器 :原文参考 英文
用树莓派实现实时的人脸检测 :项目地址
在树莓派上实现人脸识别 :参考链接 英文
圣诞老人检测机:基于树莓派和 Keras 的深度学习 AI :原文参考 英文
使用树莓派进行简易人脸识别 : blog + 课程报告
叮当:一个开源的树莓派中文智能音箱项目


密码123456

pi
raspberry

改密码:


sudo passwd pi                           #修改 Pi 密码  
sudo passwd root                         #设置 root 密码    
su root                                  #切换到 root 用户  
su pi                                    #切换到 pi 用户 

树莓派换源

清华大学开源软件镜像站

使用管理员权限(经由sudo),编辑/etc/apt/sources.list文件。参考命令行为:

$ sudo nano /etc/apt/sources.list

用#注释掉原文件内容,用以下内容取代:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

使用管理员权限(经由sudo),编辑/etc/apt/sources.list.d/raspi.list文件。参考命令行为:

$ sudo nano /etc/apt/sources.list.d/raspi.list

用#注释掉原文件内容,用以下内容取代:

deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

注意: 网址末尾的raspbian重复两次是必须的。因为Raspbian的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/子目录下。

编辑镜像站后,请使用sudo apt-get update命令,更新软件源列表,同时检查您的编辑是否正确。

摄像头安装

  1. RPi固件和raspi-config已经为了摄像头更新,请执行一次apt-get update; apt-get upgrade;
  2. raspi-config中选择camera,启动RPi固件中的摄像头驱动,然后重启
  3. 使用命令行程序raspivid和raspistill操作摄像头,捕捉视频片段或图像
  4. 捕捉到的视频片段需要用mplayer播放

参考教程1

拍照

$ raspistill -o 1.jpg -t 2000 
这句命令将在 2000ms 后拍摄一张照片,然后保存为 1.jpg。 raspiyuv 工具用法差不多,只不过拍摄得到的是一张未处理过的raw图像。 通过摄像头模块拍视频 想要用摄像头模块拍一段视频的话,可以从命令行运行 raspivid 工具。下面这句命令会按照默认配置(长度5秒,分辨率1920x1080,比特率 17Mbps)拍摄一段视频。
$ raspivid -o ex.h264

如果你想改变拍摄时长,只要通过 “-t” 选项来设置你想要的长度就行了(单位是毫秒)。

$ raspivid -o ex.h264 -t 10000

使用 “-w” 和 “-h” 选项将分辨率降为 1280x720…

$ raspivid -o ex.h264 -t 10000 -w 1280 -h 720

raspivid 的输出是一段未压缩的 H.264 视频流,而且这段视频不含声音。为了能被通常的视频播放器所播放,这个 raw 的 H.264 视频还需要转换。可以使用 gpac 包中所带有的 MP4Box 应用。

在 Raspbian 上安装 gpac,输入命令:

$ sudo apt-get install -y gpac 
然后将这段 raw 的 H.264 格式的视频流转换为每秒30帧的 .mp4 格式视频:
$ MP4Box -fps 30 -add keychain.h264 keychain.mp4 
视频长度为10秒,使用默认分辨率以及比特率。下面是一段通过 Pi Camera 拍摄的一段实例视频。 ### 如何将摄像头的数据通过网络直播播发出去: 通过nc命令(ncat - Concatenate and redirect sockets)将摄像头的输入数据,直接重定向到网络端口实现输出.

How to stream video from the Raspberry Pi camera over a network

To view the feed on Linux

Install the dependencies by running the following in a terminal:

sudo apt-get install mplayer netcat

Find your IP address by running ifconfig. (Your IP address will be listed in the console output and will probably be of the form 192.168.1.XXX).

Run the following command in a terminal to view the feed using MPlayer:

nc -l -p 5001   mplayer -fps 31 -cache 1024 -

To view the feed on Windows

Install and run Linux instead.

Find your IP address by running ipconfig. (Your IP address will be listed in the console output and will probably be of the form 192.168.1.XXX).

Download MPlayer.

Download Netcat.

Note that your browser may complain that these files are malicious, as they are unsigned executables.

Press the Windows key and the ‘r’ key simultaneously to bring up the “Run” dialog. Enter cmd.exe into the dialog and press enter/return to open a DOS prompt.

Enter the following command at the prompt to view the feed using MPlayer:

[Path to nc.exe]\nc.exe -L -p 5001   [Path to mplayer.exe]\mplayer.exe -fps 31 -cache 1024 -

To view the feed on OS X

Download MPlayer.

Alternatively, you can download mplayer using Brew, which we recommend.

Find your IP address by running ifconfig. (Your IP address will be listed in the console output and will probably be of the form 192.168.1.XXX).

Run the following command in Terminal to view the feed using MPlayer:

nc -l -p 5001   mplayer -fps 31 -cache 1024 -

To view the feed on a Raspberry Pi:

Find your IP address by running ifconfig. (Your IP address will be listed in the console output and will probably be of the form 192.168.1.XXX).

Run the following commands in a terminal on the receiving Pi:

mkfifo buffer

nc -p 5001 -l > buffer   /opt/vc/src/hello_pi/hello_video/hello_video.bin buffer

To transmit the feed from the Pi with camera module attached

After setting up the “receiving” machine as per the instructions above, run the following commands in a terminal on the “transmitting” Pi:

raspivid -t 999999 -o –   nc [insert the IP address of the client] 5001


You can then use the commands listed in the “How to use the Raspberry Pi camera software” section above to change the capture time or to add a video effect.

raspberryPi摄像头命令行软件raspistill帮助文档

树莓派摄像头模块应用程序文档翻译[转]
英文项目Github地址

常用命令


常用命令:
# 两秒钟(时间单位为毫秒)延迟后拍摄一张照片,并保存为 image.jpg
raspistill -t 2000 -o image.jpg

# 拍摄一张自定义大小的照片。
raspistill -t 2000 -o image.jpg -w 640 -h 480

# 降低图像质量,减小文件尺寸
raspistill -t 2000 -o image.jpg -q 5

# 强制使预览窗口出现在坐标为 100,100 的位置,并且尺寸为宽 300 和高 200 像素。
raspistill -t 2000 -o image.jpg -p 100,100,300,200

# 禁用预览窗口
raspistill -t 2000 -o image.jpg -n

# 将图像保存为 PNG 文件(无损压缩格式,但是要比 JPEG 速度慢)。注意,当选择图像编码时,文件扩展名将被忽略。
raspistill -t 2000 -o image.png –e png

# 向 JPEG 文件中添加一些 EXIF 信息。该命令将会把作者名称标签设置为 Dreamcolor,GPS 海拔高度为 123.5米。
raspistill -t 2000 -o image.jpg -x IFD0.Artist=Dreamcolor -x GPS.GPSAltitude=1235/10

# 设置浮雕风格图像特效
raspistill -t 2000 -o image.jpg -ifx emboss

# 设置 YUV 图像的 U 和 V 通道为指定的值(128:128 为黑白图像)
raspistill -t 2000 -o image.jpg -cfx 128:128

# 仅显示两秒钟预览图像,而不对图像进行保存。
raspistill -t 2000

# 间隔获取图片,在 10 分钟(10 分钟 = 600000 毫秒)的时间里,每 10 秒获取一张,并且命名为 image_number_1_today.jpg,image_number_2_today.jpg... 的形式。
raspistill -t 600000 -tl 10000 -o image_num_%d_today.jpg

# 获取一张照片并发送至标准输出设备
raspistill -t 2000 -o -

# 获取一张照片并保存为一个文件
raspistill -t 2000 -o - > my_file.jpg

图像参数与命令


-?,  --help             : 帮助文档
-w,  --width            : 设置图像宽度 <尺寸>
-h, --height            : 设置图像高度 <尺寸>
-q, --quality           : 设置jpeg品质 <0到100>
-r, --raw               : 增加raw原始拜尔数据到JPEG元数据
-o, --output            : 输出文件名 <文件名>,如果要写到stdout,使用`-o -`,如果不特别指定,图像文件不会被保存
-l, --latest            : 链接最近的完整图像到指定文件 <文件名>
-v, --verbose           : 在运行摄像头时输出详细信息
-t, --timeout           : 拍照和关闭时的延时指定,未指定时默认是5s
-th, --thumb            : 设置预览图(小图)参数(包括X、Y、品质)或者不设置
-d, --demo              : 运行一个demo模式(cycle through range of camera options, no capture),括号里的我可以理解成循环测试模式吗?
-e, --encoding          : 编码来输出指定格式文件 (jpg, bmp, gif, png)
-x, --exif              :将可交换图像文件应用到捕获中(格式:`key=value`)或者不设置
-tl, --timelapse        : 间隔拍摄,每拍摄一张图片
-fp, --fullpreview      : 用静态捕捉分辨率运行预览(可能会减小预览帧率)
-k, --keypress          : 按键触发,按`ENTER`键拍照,按`X`然后`ENTER`键退出
-s, -signal             : 信号触发,等待另一个进程信号来拍摄一张照片
-g, -gl                 : 绘制预览到文本,而不是使用视频渲染组件(啥意思?)
-gc, --glcapture        : 捕获GL帧buffer而不是摄像机图像
-set, --settings        : 检索摄像机设置值然后写出到stdout
-cs, --camselect        : 选择摄像头设备 <数字>,默认0
-bm, --burst            : 运行burst capture mode

-sh, --sharpness        : 设置图像锐度 (-100 到 100)
-co, --contrast         : 设置图像对比度 (-100 到 100)
-br, --brightness       : 设置图像亮度 (0 到 100)
-sa, --saturation       : 设置图像饱和度 (-100 到 100)
-ISO, --ISO             : 设置摄像头感光度
-vs, --vstab            : Turn on video stabilisation 开启摄像头防抖模式(是这个意思吗?)
-ev, --ev               : 设置EV补偿
-ex, --exposure         : 设置曝光模式(参见提示)
-awb, --awb             : 设置AWB模式(参见提示)
-ifx, --imxfx           : 设置图像效应(参见提示)
-cfx, --colfx           : 设置色彩效应(参见提示)
-mm, --metering         : 设置测光模式(参见提示)
-rot, --rotation        : 设置图像旋转 (0到359)
-hf, --hflip            : 设置水平翻转 horizontal flip
-vf, --vflip            : 设置垂直翻转 vertical flip
-roi, --roi             : 设置interest区域 (啥叫interset?)
--ss, --shutter         : 设置快门速度,微秒
--awbg, --awbgains      : 设置AWB阈值, AWB模式必须关闭
--drc, --drc            : 设置DRC水平

预览参数与命令


-p, --preview           : 预览窗口大小设置 
-f, --fullscreen        : 全屏幕预览模式
-op, --opacity          : 预览窗口透明度 (0-255)
-n, --nopreview         : 不显示预览窗口
-gs, -glscene           : GL屏幕尺寸等参数
-gw, -glwin             : GL窗口参数

曝光模式选项


auto                    : 自动曝光模式
night                   : 夜间拍摄模式
nightpreview            : 夜间预览拍摄模式
backlight               : 逆光拍摄模式
spotlight               : 聚光灯拍摄模式
sports                  : 运动拍摄模式
snow                    : 雪景拍摄模式
beach                   : 海滩拍摄模式
verylong                : 长时间曝光拍摄模式
fixedfps                : 帧约束拍摄模式
antishake               : 防抖模式
fireworks               : 烟火拍摄模式

自动白平衡选项


off                     : 关闭白平衡测算
auto                    : 自动模式(默认)
sun                     : 日光模式
cloud                   : 多云模式
shade                   : 阴影模式
tungsten                : 钨灯模式
fluorescent             : 荧光灯模式
incandescent            : 白炽灯模式
flash                   : 闪光模式
horizon                 : 地平线模式

图像特效选项


none                    : 无特效(默认)
negative                : 反色图像
solarise                : 曝光过度图像
posterize               : 色调图像
whiteboard              : 白板特效
blackboard              : 黑板特效
sketch                  : 素描风格特效
denoise                 : 降噪图像
emboss                  : 浮雕图像
oilpaint                : 油画风格特效
hatch                   : 草图特效
gpen                    : 马克笔特效
pastel                  : 柔化风格特效
watercolour             : 水彩风格特效
film                    : 胶片颗粒风格特效
blur                    : 模糊图像
saturation              : 色彩饱和图像
colourswap              : 暂未可用
washedout               : 暂未可用
posterise               : 暂未可用
colourpoint             : 暂未可用
colourbalance           : 暂未可用
cartoon                 : 暂未可用

测光模式选项


average                 : 全画面平衡测光
spot                    : 点测光
backlit                 : 模拟背光图像
matrix                  : 阵列测光

使用motion搭建视频监控系统

motion是Linux下一款轻量级的视频监控软件,motion可以提供网络摄像头的功能,当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频,这时如果将抓拍的图片或视频上传到百度云或者DropBox中就可以实现一个简单的监控系统。具体实现如下:

安装motion

$sudo apt-get install motion

配置motion选项时,先对配置文件进行备份

$sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bak
修改/etc/motion/motion.conf选项
$sudo vim /etc/motion/motion.conf

daemon on                            #开启守护进程(选配)
target_dir /home/pi/motion-images    #文件保存的路径,图像变化时图片保存的路径         
stream_localhost off                 #允许通过网页查看摄像

值得注意的是target_dir选项,默认值为/var/lib/motion。这是motion存储文件的目标文件夹。所存储文件包括了运动捕捉产生的图片或视频。用户motion必须对该目标文件夹有写入权限。这里我们将默认的文件目标进行了修改。同时注意,流媒体的默认端口是8081,这里后面会使用到。

最后,在设置文件中,默认的视频设备(videodevice项)是/dev/video0。如果你连接好了摄像头,却无法在/dev下找到video0,那么可以尝试加载V4L2驱动:


sudo rpi-update
sudo modprobe bcm2835-v4l2 #加载驱动模块

这样每次启动都要重新加载v4l2驱动,如果你希望开机就加载v4l2驱动可以在/etc/modules文件中加入bcm2835-v4l2,这样每次开机就可以直接加载v4l2驱动模块。

修改/etc/default/motion,更改守护进程的设置:

start_motion_daemon=yes

然后,启动motion

sudo motion

在同一局域网下的其他电脑上,用浏览器打开192.168.23.122:8081,可以直接看到即时拍摄的流媒体:

动作捕捉的图片和视频将存储在目录/home/pi/motion-images下。如果想改变动作捕捉的相关参数,例如动作捕捉的敏感度等,可以在/etc/motion/motion.conf中修改,这里需要参考具体motion的使用。

当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频

参数

Motion - Config File Options
汉化参数参考

DIY网页端的树莓派流畅监控,官方CSI摄像头的正确用法

参考连接:

https://blog.csdn.net/NCTU_to_prove_safety/article/details/68928496

先安装依赖:

apt-get install libjpeg8-dev cmake

今天的主角 —— 别人的Github

先在树莓派上下载其软件:

wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip

# unzip master.zip #解压~

# cd mjpg-streamer-master/mjpg-streamer-experimental

# vim plugins/input_raspicam/input_raspicam.c #编辑该文件,没有vim就用别的

进去以后,搜索fps,也就是按一下/键,然后输入fps,然后回车

然后保存退出编辑器后,编译:

# make clean all

写个脚本
假设刚才mjpg-streamer-master文件夹就在/test目录。

回到自己的目录,编写脚本:

1
2
3
4

# cd

# vim start_web_video.sh

复制以下两句:

cd /test/mjpg-streamer-master/mjpg-streamer-experimental ./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"

保存退出,给予权限:

# chmod +x start_web_video.sh

运行
./start_web_video.sh

用浏览器访问
在你的电脑的浏览器访问

http://你树莓派的ip:8080

喜欢这篇文章?打赏一下作者吧!

欢迎关注我的其它发布渠道