当前位置: 首页 > news >正文

【2023新教程】树莓派定时自动拍照并上传腾讯云对象存储COS

1 换源

仅适用于Release date: May 3rd 2023、Debian version: 11 (bullseye)这个树莓派OS版本,其他版本不保证有效。

首先使用如下命令,查看自己树莓派的架构。

uname -a

结果如下:
屏幕截图 2023-08-20 193101.png

如果红圈处显示为aarch64,使用命令sudo nano /etc/apt/sources.list,注释掉里面的所有内容,加入以下内容:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-freedeb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-freedeb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free# deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-freedeb https://security.debian.org/debian-security bullseye-security main contrib non-free
# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free

然后保存。
如果红圈处显示armv7l,则使用命令sudo nano /etc/apt/sources.list,注释掉里面的所有内容,加入以下内容:

deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi
# deb-src https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi# deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/raspbian/multiarch/ bullseye main

注意两者不可同时选择。
做完上述步骤后,使用命令sudo nano /etc/apt/sources.list.d/raspi.list ,注释掉里面的所有内容,输入以下内容:

deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main

然后保存。
执行sudo apt-get update.

2 安装OpenCV

使用命令sudo apt-get install python-opencv -y安装OpenCV。

3 编写代码

在/home/pi下创建project文件夹,在该文件夹中再创建文件夹中创建img文件夹、code.py文件。
在code.py文件中写入以下内容:

# -*- coding=utf-8
import time
import datetime  #日期时间
import os  #文件操作
import cv2  #opencv-python
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import os
import logging# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)# 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带Appid。Bucket 由 BucketName-Appid 组成
secret_id = '你的ID'     # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = '你的key'   # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou'      # 替换为用户的 region,已创建桶归属的 region 可以在控制台查,https://console.cloud.tencent.com/cos5/bucket# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None               # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'https'           # 指定使用 http/https 协议来访问 COS,默认为 https,可不填config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)camera = cv2.VideoCapture(0)  #一个摄像头,后期可扩展多个摄像头def delete_imgs():delete_url = "/home/pi/project/img"delete_list = os.listdir(delete_url)#print(delete_list)for i in range(len(delete_list)):os.remove(delete_url+'/'+delete_list[i])logging.info("delete all imgs success!")if camera.isOpened():logging.info("Start Picture!")while True:# 设置分辨率camera.set(3, 1920)  #widthcamera.set(4, 1080)  #heightret, img = camera.read()date = datetime.datetime.now().strftime("%Y-%m-%d")get_photo_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")#print(get_photo_time)file_path = "/home/pi/regular-photos-of-raspberry-pie/img/" + str(get_photo_time) + ".jpg"cv2.imwrite(file_path,img)  #保存到树莓派本地upload_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")#print(upload_time)response = client.upload_file(Bucket='raspberry1-1257204660',LocalFilePath=file_path,Key="getRasberryImgs/"+ date + "/" + str(upload_time)+ ".jpg",PartSize=1,MAXThread=10,EnableMD5=False)os.remove(file_path)  #删除树莓派本地已保存文件//有时候因为进程先后,有些图片文件来不及删除#判断img文件中有没有照片,删除掉nums = os.listdir('/home/pi/regular-photos-of-raspberry-pie/img')#删除来不及删除的照片if nums:delete_imgs()# camera.release()time.sleep(3600)

执行上述代码,即可完成每小时拍一张照并上传到腾讯云对象存储COS中。

参考资料

https://blog.csdn.net/weixin_46709801/article/details/128045344

http://www.lryc.cn/news/132303.html

相关文章:

  • 校企合作谋发展 合作共赢谱新篇|云畅科技与湖南民族职业学院签订校企合作协议
  • vue技术学习
  • 基于空间的图卷积神经网络:GNN
  • .net core发布到IIS上出现 HTTP 错误 500.19
  • 01_Redis单线程与多线程
  • 机器学习——随机森林【手动代码】
  • Vue 2 处理边界情况
  • 写一个mysql 正则表达式,每三个img标签图片后面添加<hr>
  • Spring MVC异常处理
  • Centos7安装docker后默认开启docker0的网卡|卸载默认网卡
  • 04_Redis与mysql数据双写一致性案例
  • vue的开发者工具下载『保姆级别』
  • vue的scrollTop手机环境设置值失效,本地正常可以赋值
  • [前端系列第7弹]Vue:一个渐进式的 JavaScript 框架
  • C#键盘按键对应Keys类大全
  • SpringBoot 学习(03): 弱语言的注解和SpringBoot注解的异同
  • CloudQuery:更好地管理你的 OceanBase 数据库
  • php的password_verify 和 password_hash密码验证
  • JAVA免杀学习与实验
  • Apche Kafka + Spring的消息监听容器
  • [JavaWeb]【五】web后端开发-Tomcat SpringBoot解析
  • css 用过渡实现,鼠标离开li时,背景色缓慢消息的样式
  • pytorch 线性层Linear详解
  • LeetCode 833. 字符串中的查找与替换
  • Oracle故障案例之-19C时区补丁DSTV38更新
  • 设计模式之组合模式(Composite)的C++实现
  • mongo的include方法踩坑
  • 阿里云无影云电脑/云桌面收费价格表_使用申请方法
  • jvm内存溢出排查(使用idea自带的内存泄漏分析工具)
  • JS内存泄漏