2021电赛送药小车opencv+树莓派
时间: 2025-03-05 12:01:36 浏览: 150
### 关于2021年电子竞赛中使用OpenCV和树莓派实现送药小车
#### 小车视觉功能的设计与实现
在2021年的全国大学生电子设计竞赛中,针对F题智能送药小车项目,团队专注于开发其视觉能力。此部分工作主要包括图像处理算法的选择以及硬件平台的搭建。对于视觉系统的构建选择了开源计算机视觉库——OpenCV作为核心工具[^1]。
#### 开发环境配置
考虑到编程效率及调试便利性,在PC端利用PyCharm编写Python脚本完成初步逻辑验证后再移植到嵌入式设备上运行成为一种常见做法。具体而言就是先在一个更友好的IDE环境中测试代码效果,之后再将其部署至实际执行任务的目标机器即Raspberry Pi 4B之上[^2]。
#### 控制电路说明
为了精确操控车辆运动状态(如加速减速、转向),选用了MOSFET晶体管构成H桥结构来驱动直流电动机,并借助WiringPi库函数生成PWM信号调节转速方向;而对于需要精确定位角度变化的任务,则采用伺服马达配合相应接口模块达成目的[^3]。
#### 数据通信设置
当涉及到与其他组件间的信息交换时,比如接收来自传感器的数据或是发送指令给执行机构,通常会依赖串行通讯协议RS-232C/UART。需要注意的是,默认情况下连接可能位于`/dev/ttyUSB0`路径下,但这并非固定不变,因此建议开发者们务必确认自己所使用的特定板卡上的确切位置并据此调整参数初始化语句中的端口号设定[^4]。
```python
import cv2
import numpy as np
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import serial
def setup_camera():
camera = PiCamera()
rawCapture = PiRGBArray(camera)
time.sleep(0.1)
return camera, rawCapture
camera, raw_capture = setup_camera()
for frame in camera.capture_continuous(raw_capture, format="bgr", use_video_port=True):
image = frame.array
gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray_image,50,150,apertureSize = 3)
lines = cv2.HoughLinesP(edges,rho=1,theta=np.pi/180,
threshold=70,minLineLength=5,maxLineGap=10)
if lines is not None:
for line in lines:
x1,y1,x2,y2 = line[0]
cv2.line(image,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imshow('Frame',image)
key = cv2.waitKey(1)&0xFF
raw_capture.truncate(0)
if key == ord("q"):
break
cv2.destroyAllWindows()
```
阅读全文
相关推荐











