树莓派定时采集图像上传到服务器
2017-12-10 00:02
567 查看
树莓派采集图片定时上传至服务器
准备图片存储服务器
在做这个系统之前,得先选择一个可以上传图片的服务器,当然,可以自己做一个小服务器,但是我选择了七牛网,因为它是一个免费的云图库,而且我平时写MarkDown也可以用这个先要注册登录,之后,如图操作
创建一个存储空间picture
然后再进入这个页面记住AK(access_key )和SK(secret_key )。
首先查询七牛的Python调用API可知:
# -*- coding: utf-8 -*- # flake8: noqa from qiniu import Auth, put_file, etag, urlsafe_base64_encode import qiniu.config #获取图片 os.system('raspistill -o current_photo.jpg') #需要填写你的 Access Key 和 Secret Key access_key = 'Access_Key' secret_key = 'Secret_Key' #构建鉴权对象 q = Auth(access_key, secret_key) #要上传的空间 bucket_name = 'Bucket_Name' #上传到七牛后保存的文件名 key = 'my-python-logo.png'; #生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, key, 3600) #要上传文件的本地路径 localfile = './sync/bbb.jpg' ret, info = put_file(token, key, localfile) print(info) assert ret['key'] == key assert ret['hash'] == etag(localfile)
安装七牛云的python SDK
直接安装:pip install qiniu
或
easy_install qiniu
源码安装
#从Python SDK 下载地址下载源码
tar xvzf python-sdk-VERSION.tar.gzcdpython−sdk−VERSION.tar.gzcdpython−sdk−VERSION
python setup.py install
在嵌入式系统中(树莓派)
sudo pip install qiniu
代码
首先建一个get_photo.sh脚本文件python get_picture.py
然后在/home/camera中建立一个文件get_picture.py
# -*- coding: utf-8 -*- import time from qiniu import Auth, put_file, etag, urlsafe_base64_encode import qiniu.config import os #需要填写你的 Access Key 和 Secret Key access_key = '' #这里的密钥填上刚才我让你记住的密钥对 secret_key = '' #这里的密钥填上刚才我让你记住的密钥对 #构建鉴权对象 q = Auth(access_key, secret_key) #要上传的空间 bucket_name = 'picture' #上传到七牛后保存的文件名 key = '%s_%s_%s_%s_%s_%s.jpg'%(time.localtime()[0],time.localtime()[1],time.localtime()[2],time.localtime()[3],time.localtime()[4],time.localtime()[5]) #生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, key, 3600) #要上传文件的本地路径 localfile = 'current_photo.jpg' ret, info = put_file(token, key, localfile) filename = 'current_photo.jpg' if os.path.exists(filename): os.remove(filename)
每次执行一次该程序就会自动上传一张图片,现在就差定时部分。
树莓派/Linux定时执行python脚本
开启crontab日志。crontab默认不开启日志,所以先开启定时任务的日志来查看
修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf 文件中的 #cron.* 前的 # 删掉;用service rsyslog restart重启rsyslog服务:
写定时任务
crontab -e
开启本用户的定时任务,即创建以本用户名为文件名的定时任务文件,位置在/var/spool/cron/crontabs/。
定时任务语句格式为:执行周期+命令,周期有5个域,分别是
分钟,小时,日(day of month),月(month of year),周几(day of week).
每个域不加限制任意的话用,整体格式为: * * * * command
比如我的脚本是 /home/camera/get_photo.sh
执行环境为 /usr/bin/python2.7
每5分钟执行一次
则语句为
/5 * * * /usr/bin/python2.7 /home/camera/get_photo.sh
写完后重启cron 服务
service cron restart
顺便附上常用的周期格式
每五分钟执行 /5 * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
简单总结一下定时脚本:
crontab -e 选择vim进入,到末尾输入 o 然后在末尾加入 */5 * * * * /home/camera/get_photo.sh 然后按Esc->:wq->换行退出 最后重启cron sudo service cron restart
实物图
最终在七牛云上看到的效果
相关文章推荐
- python定时采集摄像头图像上传ftp服务器功能实现
- python定时采集摄像头图像上传ftp服务器功能实现
- Python定时把摄像头采集的图像传送到某ftp服务器
- UIGraphicsBeginImageContext系列知识——缩放图像尺寸,方便上传至服务器
- 利用Windows Service,定时监控某一目录,发现新文件后自动上传到指定web服务器
- 图像检索服务器编写问题记录——日志定时写回
- 树莓派学习笔记——定时向yeelink上传树莓派CPU温度
- 定时上传文件到服务器脚本
- [转]ZF与FCKeditor集成完全攻略(包括上传、浏览服务器图像)
- jQuery上传文件到服务器,实现量上传及压缩包导入,支持Office文档、PDF、图像、音视频和图纸等各类型文件。上传完成后系统自动为图片、音、视频类文件增加摘要及缩略图
- 利用ftp定时上传log到其他服务器的方法
- phpcms上传图片时,点击【上传到服务器上】按钮,显示:缺少图像源地址的解决方法
- 利用ftp定时上传log到其他服务器
- iOS上传图像到服务器,以及服务器PHP接收的几种方法
- 定时向yeelink上传树莓派CPU温度
- 【原创】AIX 、Linux 和Windows 定时上传文件到FTP服务器的配置方法
- 用OpenCV库函数捕捉图像上传FTP服务器
- FlashFX 设置 定时上传数据到ftp服务器
- iOS后台与服务器交互(支持锁屏)eg:后台定时上传当前位置
- 用Python实现定时备份Mongodb数据,并上传到FTP服务器