前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >树莓派实时图像识别回显墨水屏(软硬件教程)

树莓派实时图像识别回显墨水屏(软硬件教程)

作者头像
SAnBlog
发布2021-03-03 14:38:30
1.4K0
发布2021-03-03 14:38:30
举报
文章被收录于专栏:SAnBlogSAnBlog

前言

为了不让树莓派吃灰较劲了脑汁,其实这个功能很早之前就折腾过了,但是当时鼓捣的的外观并不好看,所以也没有打算分享的计划.最近一直在折腾树莓派ZERO WH,后面又买了UPS和墨水屏,个人认为这就是树莓派ZERO WH的最终归宿,能断电展示信息(墨水屏性质),UPS又能保证不间断电源.

在此基础上能衍生出很多玩法,因为ZERO轻巧并搭配了UPS,因此就可以随身放置,衍生一个好玩的想法,比如接上摄像头搞一些监控或者实时图像识别,同时最近也在开发微信机器人,接入机器人也是不错的玩法.

树莓派折腾开始.

以前的一个版本

旧新成品

3B+ 不方便携带

ZERO WH小巧方便

硬件

树莓派ZERO WH树莓派红外摄像头可选(树莓派UPS)可选(树莓派2.13墨水屏)

安装

通过树莓派专用摄像头连接线连接树莓派和摄像头.

这里要注意,树莓派ZERO和其他树莓派型号插线不通用.购买的时候要注意选择ZERO版本,插口会比较小一点.

教程

保证树莓派安装了Raspberry系统,我这里为了节省性能安装的lite版本.不需要可视化界面.

下载地址:https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit

安装python3或者python2.7(自带)

我这里用的python3,2.7没尝试.懒得装3的可以试试自带的是否可以.

墨水屏驱动

如果不需要回显墨水屏可以跳过此步骤.

首先到github下载对应墨水屏的驱动文件

https://github.com/waveshare/e-Paper,下载即可,后面会用到.

百度图像识别SDK注册并安装

注册图像识别API

https://ai.baidu.com/tech/imagerecognition/general

注册免费每天100次接口调用,学习足够了.

下载SDK:https://ai.baidu.com/sdk#bfr

选择 图像识别 python sdk

安装SDK

将下载好的SDK上传至树莓派并解压,进入目录执行安装

代码语言:javascript
复制
sudo python3 setup.py install

代码

代码流程

1.执行shell拍照脚本,并返回照片名字2.读取上述返回照片3.将照片内容上传至百度图像识别API获取识别结果4.将结果回显墨水屏或者打印控制台

python代码

camera2AI.py (如果有墨水屏,该文件放置墨水屏驱动同级目录)

代码语言:javascript
复制
#!/usr/bin/python# -*- coding:utf-8 -*-import osimport syspicdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')if os.path.exists(libdir):    sys.path.append(libdir)import loggingimport timefrom waveshare_epd import epd2in13_V2from PIL import Image, ImageDraw, ImageFontimport tracebackimport socketimport requestsimport jsonimport refrom aip import AipImageClassifyimport mathlogging.basicConfig(level=logging.DEBUG,                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')# 读取图片def get_file_content(filePath):    with open(filePath, 'rb') as fp:        return fp.read()def getClient():    #  这里输入你创建应用获得的三个参数  百度图像识别注册获取    APP_ID = ''    API_KEY = ''    SECRET_KEY = ''    return AipImageClassify(APP_ID, API_KEY, SECRET_KEY)try:    client = getClient()    img = os.popen('sh /home/pi/shell/camera.sh').read()  #拍照脚本代码路径    logging.info(img)    image = get_file_content('/media/local/camera/' + img)#拍照后保持的照片地址    # 调用通用物体识别    result = client.advancedGeneral(image).get('result')    logging.info(result)    epd = epd2in13_V2.EPD()    epd.init(epd.FULL_UPDATE)    epd.Clear(0xFF)    # Drawing on the image    font15 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 15)    time_image = Image.new('1', (epd.height, epd.width), 255)    time_draw = ImageDraw.Draw(time_image)    step = 1    for r in result:        text = '物品:{} 可信度:{}%'.format(r.get('keyword'), round(r.get('score') * 100))        time_draw.text((50, step), text, font=font15, fill=0)        step = step + 20    epd.display(epd.getbuffer(time_image))    logging.info("Goto Sleep...")    # epd.sleep()except IOError as e:    logging.info(e)except KeyboardInterrupt:    logging.info("ctrl + c:")    epd2in13_V2.epdconfig.module_exit()    exit()

上面需要调用shell脚本进行实时拍照

camera.sh

代码语言:javascript
复制
time=$(date "+%Y%m%d%H%M%S")sudo raspistill -o /media/local/camera/$time.jpg #拍照后保持的照片地址echo -n "$time.jpg"

运行

代码语言:javascript
复制
python3 camera2AI.py

扩展

思路扩展

根据以上配置好后,可以放置摄像头对准一处,通过crontab定时执行图像识别

玩法

识别到指定任务或者物品可以上传云端,再通过微信机器人转发至微信等处

微信机器人下篇教你如何玩转

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAnBlog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 旧新成品
  • 硬件
  • 安装
  • 教程
    • 安装python3或者python2.7(自带)
    • 墨水屏驱动
    • 百度图像识别SDK注册并安装
    • 代码
    • 运行
    • 扩展
    相关产品与服务
    图像识别
    腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档