手机控制树莓派云台并传回图像

本文介绍了如何通过树莓派的摄像头将实时图像发送到手机APP,并利用这些图像控制小车,无需设置热点,仅需局域网连接。涉及openCV库的使用和简单代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是对https://blog.csdn.net/wangzhenyang2/article/details/81606700的实际演示

通过树莓派摄像头传回实时图像给手机APP
在这里插入图片描述
在这里插入图片描述
与推文不同推文不同,不需要设置树莓派热点,树莓派热点设置非常麻烦,只需要将树莓派和手机连接到同一个局域网下即可

树莓派中需要安装openCV

#!/usr/bin/python
import cv2
import numpy
import socket
import time
import struct

#HOST='192.168.191.1'
HOST='255.255.255.255'//这里需要修改为手机的IP地址
PORT=5051
WIDTH=320
HEIGHT=240

server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) #enable broadcast
server.connect((HOST,PORT))
print('now starting to send frames...')
capture=cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH,WIDTH)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT,HEIGHT)
try:
    while True:
        time.sleep(0.01)
        success,frame=capture.read()
        if success and frame is not None:
            result,imgencode=cv2.imencode('.jpg',frame,[cv2.IMWRITE_JPEG_QUALITY,90])
            #result,imgencode=cv2.imencode('.webp',frame,[cv2.IMWRITE_WEBP_QUALITY,20])
            #print(len(imgencode))
            server.sendall(imgencode)
            #print('have sent one frame')
except Exception as e:
    server.sendall(struct.pack('b',1))
    print(e)
    capture.release()
    server.close()
    


手机端输入树莓派的IP

3 源码地址
树莓派端:
https://github.com/RyanWang20180512/RaspberrryPi-Project-for-PiCar.git
手机端:
https://github.com/huangtingwei998/Cellphone-control-project-for-Picar-master

购买现成的小车底座,包括电机马达和车轮;
使用L298N模块来控制小车底座上的电机,使树莓派可以驱动小车运动;
一块12V的锂电池,专门给L298N供电;
树莓派专用CSI接口摄像头,用来采集图像;
由两个SG90舵机构成的云台,作为摄像头的搭载平台;
一块OLED显示屏,简要地显示一些信息;
不用的一个充电宝,用来给树莓派供电;
自己的Android手机

### 基于树莓派云台激光追踪项目方案 #### 项目概述 基于树莓派云台激光追踪项目是一种通过计算机视觉技术检测目标位置利用伺服电机调整云台角度来跟踪目标的应用场景。该项目通常涉及硬件搭建、软件开发以及两者之间的协同工作。 --- #### 硬件需求 以下是实现该功能所需的硬件清单: 1. **树莓派主板**:推荐使用性能较强的型号,如树莓派4B[^2]。 2. **USB摄像头**:用于捕获视频流数据。 3. **双轴云台模块**:搭载两个舵机(或步进电机),分别负责水平和垂直方向上的转动。 4. **激光发射器**:固定在云台上,随云台移动而指向特定区域。 5. **电源适配器**:为整个系统供电。 6. **扩展板(可选)**:简化线过程,便于管理GPIO口。 如果初次尝试此类项目,则建议按照标准配置采购设备,仔细检查各组件间的兼容性问题。 --- #### 软件准备 为了完成此任务,需安装必要的操作系统及依赖库: 1. **Raspberry Pi OS** - 下载官方发布的最新版本镜像文件[^1]^,将其烧录至MicroSD卡内作为启动盘。 2. **Python编程环境及相关工具包** 安装`OpenCV`,它提供了丰富的图像处理函数支持颜色识别等功能;还有`RPi.GPIO`用来操控物理层面上的输入/输出端口。 ```bash sudo apt-get update && sudo apt-get upgrade pip install opencv-python numpy gpiozero picamera ``` 3. 配置网络连以便远程调试程序运行状况。 --- #### 实现逻辑分析 整体流程可以分为以下几个部分: ##### 数据采集阶段 借助内置或者外型摄像装置获取实时画面帧序列。对于某些特殊场合可能还需要考虑光线补偿措施以提高成像质量。 ##### 图像预处理环节 运用色彩空间转换方法分离感兴趣的目标物象素集合。比如当指定寻找红色物体时就可以先转到HSV模式再设定阈值范围提取对应掩码图层[^3]. ```python import cv2 import numpy as np cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() hsv_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) lower_red=np.array([170,80,80]) upper_red=np.array([180,255,255]) mask=cv2.inRange(hsv_frame ,lower_red ,upper_red ) res=cv2.bitwise_and(frame ,frame ,mask=mask ) contours,hierarchy=cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2:] ``` ##### 控制算法设计 计算得出当前视野中心坐标与实际捕捉到的对象质心偏差量之后传递给PWM信号驱动两路独立工作的马达旋转适当的角度直至二者重合为止形成闭环反馈机制从而达到精准定位的目的。 ##### 输出动作执行 最后由固态继电器或者其他形式开关元件触发点亮指示灯泡或者是激活其他外部负载电路完成最终效果展示。 --- #### 注意事项 - 在组装过程中要特别留意电气安全规范防止短路损坏昂贵器材。 - 如果发现异常情况比如说持续发出警报声应该逐一排查线路是否存在虚焊现象或是插槽松动等问题. - 开发期间多做单元测试验证每一步骤单独运作正常后再整合起来减少后期修改成本。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值