亲身实践:树莓派摄像头视频上传至云服务器的简单教程 (如何把树莓派摄像头的视频上传云服务器)
树莓派是一款微型电脑,广受智能化家居、物联网、教育等领域的开发者和爱好者青睐,因其小巧方便、灵活性强、性价比高等优点。而树莓派的摄像头模块,更是为其产品应用场景增添了不少可能性,如智能门禁、视频监控、智能家居等领域均能应用。本篇文章将介绍如何将树莓派摄像头视频上传至云服务器,通过云平台进行实时监控。
一、硬件准备
1、树莓派(本文使用树莓派4B)。
2、树莓派摄像头模块(注意区分V1和V2版本,并正确安装使摄像头可以使用)。
3、一个能够连接网络的树莓派(推荐使用树莓派3B+及以上)。
二、软件准备
1、树莓派操作系统(本文使用Raspbian Buster Lite版本)。
2、Python程序语言环境(默认Raspbian Buster Lite已经预装)。
3、OpenCV图像处理库(可以通过apt-get命令安装,也可以借助外部库)。
4、云平台账号(本文使用七牛云作为示例场景。其他云平台同理)。
5、七牛云Python SDK库(可以在GitHub下载源代码。其他云平台SDK同理)
三、步骤说明
1、安装树莓派及其摄像头模块。
首先需要将树莓派开机,并安装连接摄像头模块。根据模块类型不同,可以通过官方文档或其他资料进行操作。在本文中,我们使用的是V2的摄像头模块,故需先在terminal输入以下命令:
sudo raspi-config
打开树莓派的配置选项,选择“Interfacing Options”中的“Camera”,并开启摄像头,并确认保存。
2、安装Python和OpenCV库。
在树莓派连接网络后,可以打开terminal,输入以下命令进行安装:
sudo apt update
sudo apt install python3 python3-opencv
提示:如果OpenCV安装失败,可以考虑从外部来源进行安装,如:
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libopencv-dev
3、注册七牛云账号并创建Bucket。
在此处不再赘述。具体注册及创建Bucket的过程可以查看七牛云平台上的教程。
4、安装云平台Python SDK。
可以通过访问云平台上的GitHub地址,下载SDK的源代码并将其解压。然后进入到解压后的目录,使用命令:
sudo python setup.py install
安装SDK库。
5、编写Python脚本。
编写Python脚本是实现上传树莓派摄像头视频到云服务器的关键步骤。代码如下:
import os
import time
from cv2 import cv2
from qiniu import Auth, put_file, etag, urlsafe_base64_encode
from qiniu import BucketManager, build_batch_delete
# access_key = ‘your_access_key’
# secret_key = ‘your_secret_key’
access_key = ‘x’
secret_key = ‘x’
bucket_name = ‘your_bucket_name’
def upload_camera_record():
videoCapture = cv2.VideoCapture(0)
file_name = str(time.time()) + ‘.avi’
file_path = ‘/home/pi/’ + file_name
fourcc = cv2.VideoWriter_fourcc(*’XVID’)
out = cv2.VideoWriter(file_path,fourcc, 20.0, (640,480))
start_time = time.time()
start_flag = True
while True:
ret, frame = videoCapture.read()
if ret and start_flag:
out.write(frame)
if time.time() – start_time > 8:
out.release()
break
elif not ret:
break
print(cv2.mean(frame))
if cv2.wtKey(1) & 0xFF == ord(‘q’):
break
videoCapture.release()
cv2.destroyAllWindows()
q = Auth(access_key, secret_key)
key = file_name
token = q.upload_token(bucket_name, key, 3600)
ret, info = put_file(token, key, file_path)
assert ret[‘key’] == key
assert ret[‘hash’] == etag(file_path)
assert os.path.exists(file_path)
print(‘Record({}) is uploaded!’.format(file_name))
time.sleep(1)
os.remove(file_path)
print(‘The file({}) is deleted!’.format(file_path))
完成以上步骤后,将Python脚本保存为upload.py,即可使用以下命令运行该脚本:
python upload.py
执行完毕后,树莓派摄像头所拍摄的视频即可被上传到七牛云服务器上。
四、
通过以上步骤,我们成功地将树莓派摄像头模块所拍摄的视频上传到云平台上,方便进行实时监控和录像管理。后续可以根据自身需求和实际场景,通过其它云平台API接口,更多地扩展树莓派应用。