树莓派拍照上传--RASPICAM+七牛
在买树莓派的时候顺带买了原装的树莓派摄像头模组,想要实现拍摄图片加上上传到网盘的功能。树莓派的摄像头还是蛮好用的,或者大家可以使用自己的USB摄像头,不过还是老问题,注意兼容性的问题。首先更新下软件:
然后运行命令sudo raspi-config
转到树莓派的配置界面,里面可以设置时区、扩展系统大小等等功能,选择Enable camera
选项然后重启sudo shutdown -r now
。接下来就可以使用摄像头拍摄照片了。
##使用摄像头拍照
摄像头上的螺丝孔太小,没找到合适的螺丝固定,只能切了块亚克力板用橡皮筋先绑着,在用硅胶打在了树莓派的底板上。
使用raspistill
命令来拍摄禁止的画面,将摄像头插在板上之后,使用命令raspistill -o cam.jpg
命令来拍摄照片,照片就会存储在运行该命令的文件夹下。如果发现你的照片是上下颠倒的,使用命令raspistill -vf -hf -o cam2.jpg
来反转图像。树莓派摄像头的分辨率是2592 x 1944,一张照片大概2.4MB左右。如果每分钟拍摄一张照片的话一个小时占用144MB,7个小时大概存满1GB,一天能拍3.3GB。你可以可以使用-w
和-h
指定你的照片的尺寸,更多选项参考。
###定时拍摄任务
如果你想每天的8点拍摄一张照片的吧,使用定时任务是个不错的选择,首先新建一个脚本:nano camera.sh
,输入:
这个脚本拍摄照片并且命名为拍摄的日期,保存之后修改下该脚本的执行权限:chmod +x camera.sh
。再使用crontab命令:crontab -e
,这个命令是用于设置周期性被执行的指令。在里面写入:
这个命令代表每分钟执行camera.sh这个脚本一次,cronta命令的格式可以参考这里。保存之后该脚本就会每分钟执行一次了。
除了拍摄照片之外,还有一些其他的命令如raspivid
用于拍摄视频等其他功能。
###照片压缩视频
当你拍摄了一天,发现你的文件夹里面全是图片,是不是会想到把这些图片压缩成视频也是个不错的选择,这时候我们需要mencoder
的帮助了。
首先在cd到存放照片的文件夹,执行ls *.jpg > stills.txt
将所有的jpg图片名称重定位到stills.txt中,然后安装mencoder:sudo apt-get install mencoder
,安装完成之后执行命令:
完成之后你就会发现当前文件下多出了timelapse.avi文件,这就是图片压缩成的视频。PS:如果发现在树莓派上压缩比较慢的话,可以放在你的PC上执行^^。
###图片上传七牛
你的树莓派在运行了一段时间之后可能SD卡就满了,可是你还想继续拍照存储怎么办,一种方法就是换张SD卡继续,当然你也可以将图片存到网盘上,这样你就可以将本地的图片删了留出空间了。
网盘我用了七牛,因为这个博客上的图片也全部托管在上面,很好用。查看七牛的开发文档觉得是可以实现的,语言使用python,最新的七牛SDK是7.0.0(截止2014.11.17),不需要对它的机制了解很深刻,我们只需要用它的接口就可以了。
安装七牛SDK
使用之前需要安装七牛的SDK,可以使用pip install qiniu
或easy_install qiniu
安装,也可以从github上下载源码安装:
在安装时可能会需要缺少request.auth包的错误:
你可以在github上下载安装下,然后再执行python setup.py install
命令就可以了:
获得AccessKey 和 SecretKey
在使用SDK需要拥有一对有效的 AccessKey 和 SecretKey 用来进行签名授权。这两个key如何获得呢?1:开通七牛开发者帐号 2:登录七牛开发者自助平台,查看 Access Key 和 Secret Key。
上传图片
都准备好了之后就可以编写程序了,指的注意的是七牛SDK7.0.0版本和之前的版本相差蛮大的,许多包的名字都改了,如果你发现你找的网上的程序发现包不能导入,可能就是使用SDK版本的问题,我这里使用的是的7.0.0。因为没找到七牛相关的包的说明,就参考七牛给出的test将所有的包全部导入了,程序如下,实现的是完成当前文件夹中123.png文件上传到指定的空间中:
最基本的功能已经完成了,剩下的就是实现你想要完成的功能了!