在树莓派上部署视觉识别和通信

环境搭建
视觉程序和通信程序
控制程序
遇见问题

0. 先验知识

  1. 有一定的 Linux 基础,会基本命令操作。Linux 教程

  1. 掌握 Python 语言语法,会编写基本 Python 程序。Python 教程

  1. 掌握 OpneCV 计算机视觉库,会用 API 进行基础图像操作。OpneCV 教程

1. 环境搭建

这一步主要安装系统和安装必要的软件。

1.1 系统安装

我在树莓派安装的是 Ubuntu20.04(server)系统,步骤就是用 SD 卡烧录系统镜像文件。

1.2 必要软件安装

  1. 烧录好的 SD 卡插进树莓派后,连接显示器,由于只有终端使用不方便,先要安装桌面。

  1. 远程连接软件 NoMachine 便于以后没有显示器远程连接。

  1. 固定 IP 以后就使用这个 IP 在服务端远程连接树莓派。

  1. 安装 OpenCV ,串口连接使用的是 pyserial 这个库查看官方文档,基本 IO 控制使用的是 gpiozero 库,使用安装查看官方文档

2. 视觉和通信程序

2.1 视觉处理步骤

  1. 通过亮度和颜色空间筛选出大概的感兴趣区域。

  1. 通过图像形态学操作,腐蚀膨胀等得出最终需要区域。

  1. 需要的区域是白色,不需要的是黑色。

  1. 通过找轮廓操作,获取边缘,然后通过区域特征,筛选出需要的轮廓。

2.2 通信程序

serial.read(1) # 读一字节
serial.write(bytes) # 写 bytes 类型串

2.3 基本控制

控制舵机:定义一个 Servo 类型,可自定义最大脉冲宽度。

2.4 多线程处理

因为串口接收如果放在跟图像处理(时间长)可能不能即时接收到数据,就用多线程。

import threading
thread = threading()
thread.start()

5. 遇到问题

5.1 bytes 类型与 int 类型转换

pyserial 接收,发送函数用的是 bytes 类型,相当于 char 。可以用 bytes.hex() 转为 16 进制数对应的字符串如 b'\xaa' -> 'aa'。可以用 int.tobytes() 转为将 int 类型转为指定字节长的 bytes 类型如:1 -> b'\x01'。可以用 int() 将 bytes 类型转为 int 类型。

5.2 gpiozero 安装后要重启后才成使用

5.3 CH340 模块使用

我的这款模块

使用过程发现插电脑后树莓派再单独连 vcc 不行。如果两方同时供电的话应该只需一方(PC)供电, vcc 与 3.3v 短接起来。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值