【发疯毕设日志day5(下)】大疆tello火影手势结印起飞数据采集代码逐句分析

airsim键盘控制无人机起飞代码 使用airsim中的hellodrone.py代码投喂到智谱清言中,然后让他根据hellodrone.py代码写出键盘控制无人机起飞代码,得到如下可用代码,t起飞,l降落。print("无人机已准备就绪...")print("开始监听键盘事件...")print("程序终止。# 无人机降落并关闭API控制。# 连接到AirSim模拟器。# 注册键盘事件监听器。# 启动键盘事件监听。# 停止键盘事件监听。 阅读详情

1.数据(手势图片)采集

1.0 注意事项

1.1 代码分析

首先是导入一些包 cv2、numpy、time、djitellopy

做了一个类叫collect

1.在__init__()里对tello进行初始化
    def __init__(self):
        # tello初始化
        self.tello = Tello()
        self.tello.connect()
        self.tello.streamon()
2.定义主函数main

        定义变量last_col_time  是最近一次的收集图片时间  初始化为None

 def main(self,label_id=1,counts=3):

        index = 1
        last_col_time =  None
3.在main函数里通过while语句进行读取视频帧等一系列的操作。

        当last_col_time =None  表示图片采集还未开始,

        我们运行程序就是要采集图片,所以把运行到此处的时间赋值给last_col_time

        用flip函数对视频帧进行镜像翻转

            if last_col_time is None:
                last_col_time =  time.time()

            # 翻转
            frame = cv2.flip(frame, 1)
用if语句判断index 和counts的关系

        collect.main(1,15)表示我采集第一个动作采集15张

        用counts来计数表示计划采集多少张

        index是目前采集了多少张

if index < counts+1:
    .......
         做一个时间判断 。

                如果不做时间判断,视频是非常快的,1s可能就采集15张了。

                我们想让它间隔一段时间(1s)再采集一下。

now =time.time()
if now -last_col_time >1:
    #当前时间距离上一次采集时间已经大于1s了,那么我可以继续采集

               采集完我们得到了一张图片,我们想保存一下它,

                文件名的格式是1_1.jpg   1_2.jpg  1_3.jpg  这种

                用cv的写文件命令cv2.imwrite(filename,frame) 保存这一帧的画面

                

  # 每隔1秒采集一张: 1_1.jpg, 1_2.jpg
                    filename = './trainingImgs/{}_{}.jpg'.format(label_id,index)
                    cv2.imwrite(filename,frame)

                   然后更新last_col_time  变成此次采集的时间now

                    打印一下电量,因为电量太低的话有可能就会失败

                    battery = self.tello.get_battery()

                    print('成功采集:{},飞机电量:{}'.format(filename,battery))

                index自增+1.

'''
yolo 动作训练图片采集程序
'''
import cv2
import numpy as np
import time
# tello
from djitellopy import Tello

class Collect:
    def __init__(self):
        # tello初始化
        self.tello = Tello()
        self.tello.connect()
        self.tello.streamon()


    def main(self,label_id=1,counts=3):

        index = 1
        last_col_time =  None

        while True:
            # 读取视频帧
            frame = self.tello.get_frame_read().frame
            
            if last_col_time is None:
                last_col_time =  time.time()

            # 翻转
            frame = cv2.flip(frame, 1)

            if index < counts+1:
                now = time.time()
                if now - last_col_time > 1:
                    # 每隔1秒采集一张: 1_1.jpg, 1_2.jpg
                    filename = './trainingImgs/{}_{}.jpg'.format(label_id,index)
                    cv2.imwrite(filename,frame)
                    
                    last_col_time = now

                    # 获取电量
                    battery = self.tello.get_battery()

                    print('成功采集:{},飞机电量:{}'.format(filename,battery))

                    index +=1


            else:
                
                break
                
            
            # 显示
            cv2.imshow('demo', frame)
            if cv2.waitKey(10) & 0xFF == ord('q'):
                break
            
        cv2.destroyAllWindows()


        
# 实例化
collect = Collect()
# 给你准备5s
time.sleep(5)
# 标签为1,采集15张
collect.main(3,30)

unity编写代码控制飞机飞行 自己编写了 using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour { public float speed = 1.5f;//控制移动速度 public Transform m_transform; void Start() { m_transform = this.transform; 阅读详情

相关推荐

PX4Ctrl起飞代码里的“黑魔法”:解析电机加速曲线与高度控制策略

本文深入解析PX4Ctrl起飞代码中的电机加速曲线与高度控制策略,揭示其背后的控制算法设计。通过代码解读,详细介绍了指数曲线在电机加速中的应用、高度控制策略的优化以及状态机设计的精妙之处,为无人机开发者提供实用的调试经验和技术洞见。

weixin_30313409的博客 571

ros无人机起飞运行详细步骤,包括c++、python代码

本文介绍了在ROS环境下实现PX4无人机控制的全过程。首先详细说明了在VSCode中创建ROS功能包的步骤,包括配置package.xml和CMakeLists.txt文件。然后提供了C++和Python两种实现方案.

m0_64411033的博客 2879

保姆级教程:用PX4Ctrl实现无人机自动起飞,从状态机到悬停的完整代码流程

本文详细解析了PX4Ctrl实现无人机自动起飞的完整代码流程,从状态机架构设计到核心函数实现,涵盖电机启动曲线、高度判断与悬停过渡等关键环节。通过实战调参指南和避坑技巧,帮助开发者快速掌握自动起飞技术,提升无人机控制系统的稳定性和可靠性。

weixin_28692153的博客 365

arduplane 自动弹射起飞

首先通过遥控器的一个通道设定这个TAKEOFF 模式,需要修改的参数是: 2. 自动触发弹射起飞条件 下面是代码执行过程: 自动起飞检测: 自动触发起飞检测条件: 整体流程如下所示:后续补充,谢谢

陌城烟雨 110

Tello无人机飞控(Python)程序设计

Tello无人机飞控(Python)程序设计总结。Tello无人机飞控(Python)程序设计总结。3.调用tello指定的摄像头。正面的720p摄像头。向下的480p摄像头。

ChinaYouxin的博客 8455

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3567

一键起飞条件分析

一键起飞需同时满足以下全部条件层级条件严格程度前端硬限制电池电量 > 30%必须满足前端警告搜星质量 ≥ 10建议满足前端冲突检测高度间隔 ≥ 10米(多机场景)必须满足用户确认勾选环境安全确认必须满足后端状态校验设备在线 + 状态IDLE必须满足后端权限校验获取飞行控制权必须满足后端配置校验各高度值 ≤ 系统限高必须满足。

dualvencsdn的博客 479

STM32H7+LAN8720A之ETH与LWIP配置问题(End)

开篇介绍 由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。 一、激光雷达3i-T1 由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配

weixin_42024702的博客 1万+

[发疯毕设日志day6]火影结印使大疆tello起飞——数据集采集和yolov5模型训练

火影结印使大疆tello起飞——数据集采集和yolov5模型训练

pythonAk47vt的博客 717

windows10家庭版输入loadrunner注册码时报“License security violation. Operation isnot allowed”的解决办法

有可能出现2个错误第一个可能是第二个可能是“License security violation. Operation isnot allowed”ok,在此我在百度找了很多方法,大部分的方法都是删除注册表,但我根本就找不到这个注册表,而后又是管理中心找本地用户和组,但我依旧找不到这个玩意,然后可能是windows10家庭版本来就没有这个。再然后又以管理员身份去运行填写,好的,依旧报错,依旧未解决...

qq_30990097的博客 2558

极验第四代滑块验证码破解(三):滑块轨迹构造

极验第四代滑块验证码破解(三):滑块轨迹构造声明 声明 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 本文关联文章超链接:

帯泪的鱼的博客 8624

【发疯毕设日志day7】大疆tello火影结印起飞——模型测试代码

启动tello,加载初始化模型设置一个置信度阈值(设置的高一些)

pythonAk47vt的博客 480

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

python tello_Tello-Edu无人机:如何用Python代码捕捉图像

我是一个初学者,正在学习编程一种叫Tello的无人机。我正试着用它拍摄一张照片。在在手册中,没有使用无人机拍摄图像的选项。这里只提到了录像。如何用无人机用Python代码捕捉图像?在以下是tello.py文件的代码:# This code is adopted from https://learn.droneblocks.io/p/tello-drone-programming-with-pyth...

weixin_39706861的博客 1331

PDD psnl_verification anti_content 生成顺序与环境校验说明

K不是明文 URL,而是从当前href再派生出来的一小段摘要值。页面 URL 变,K会跟着变但K不是直接肉眼可读的 URL 字串可以把它理解成“URL 的短摘要字段”。这一步是最容易被误解的地方。它吃进去的是压缩后的中间串不是直接吃环境字段它内部还带有长度预算 / 字符映射 / 位置处理逻辑所以最终看到的环境字段 bytes协议头deflate 压缩自定义编码多层叠加后的结果。先把字段总包做再把压缩结果转成raw再拼fTail最后走做字符级输出因此,当前看到的协议字段流。

码王吴彦祖的博客 68

从零搭建运行Pytorch版pointNet++模型全流程及个性化数据集训练测试可视化

从零搭建运行Pytorch版pointNet++模型全流程及个性化数据集训练测试可视化

funfan的博客 9430

Tello 无人机 python 编程

Tello python 编程 添加链接描述 具体看链接吧,https://www.bilibili.com/video/BV1Bg4y1i7MF/ 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;

qq_45873528的博客 5798

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WebSocket 快速实操 这篇就够了

WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。它允许服务端主动发送信息给客户端,是实现推送(Push)技术的一种非常流行的解决方案。WebSocket的特点:(1)全双工通信:与传统的HTTP请求-响应不同,WebSocket支持服务器和客户端之间的全双工通信。(2)单连接:WebSocket连接一旦建立,就可以送和接收无数个消息。(3)服务器主动推送:服务器可以主动发送信息给客户端,不需要客户端不断地询问服务器是否有新信息。

制定持续可量化的目标,不断坚持。 2645

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux C++ 串口通信 写数据

编写代码,在Linux中运行,写数据,并使用串口调试工具接收。首先,

a2730595898的博客 676

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

工程记录:使用tello edu无人机进行计算机视觉工作(手势识别,yolo3搭载)

工程记录:使用tello edu无人机进行计算机视觉工作(手势识别,yolo3搭载)

weixin_74277223的博客 1312

匿名无人机代码FlightCtrl简单分析

这个flightCtrl文件,是真的很长又很难。。。各种标志位啊,判断啊,开关啊,逻辑判断啊什么的,趁通宵把代码梳理一遍。 这个文件里的函数虽不算最多,但引用的头文件相当多,也就是说这个东西跟整个系统各个部分都有关系,难度也就最大。。。不过仔细看应该还是能看懂的,就是费点时间。 1、pid初始化: void All_PID_Init(void) { Att_1level_PID_Init();...

qq_41382643的博客 3606

无人机航线解析_flight-plan-parser

以下为本文档的中文说明Flight Plan Parser 是一个无人机航线解析技能,用于将自然语言的飞行命令转换为结构化的航路点数据,供无人机模拟器的轨迹规划器使用。它支持四种飞行命令模式:起飞(Take off to 目标高度 in 秒数)、悬停(Hover at 目标高度 for 秒数)、飞行(Fly from 起点坐标 to 终点坐标 in 秒数)和降落(Land from 目标高度 in 秒数)。每条命令对应一个飞行段,附带模式标签(takeoff、hover、fly、land)。

小青蛙电气 45

Java AI+若依框架项目开发 RuoYi-Vue(SpringBoot + Vue)

RBAC(Role-Based Access Control,基于角色的访问控制)是一种用于限制系统用户访问计算机或网络资源的机制。用户根据其在组织中的职责被分配一个或多个角色,而这些角色则被分配了相应的权限。所以对于测试用例中,需要在ruoyi-admin中的application.yml中修改Swagger的请求前缀为:/仅有权限还不够,还需要正确的访问路径,默认是添加/dev-api前缀(根据需要进行修改)因为这里的售卖状态值比较固定,可以使用下拉框的方式确定,所以先创建该相关字典类型。

制定持续可量化的目标,不断坚持。 3514

出行即服务MaaS主题汇总 2024-04-22

交通出行是与人们日常生活息息相关的活动。出行即服务(MaaS)是通过电子交互界面获取和整合交通出服务上的资源,通过统一协调各种交通出行服务,满足人们的出行要求。通过对这一体系的有效利用,可充分了解和共享整个城市交通所能提供的资源,以此实现无缝对接、安全、舒适、便捷的出行服务。(至2024年04月22日)可持续的城市出行——必要性和紧迫性(英) 毕马威 2024-4-16公平出行的三大支柱白皮书(英...

weixin_55366265的博客 833
上一篇: [发疯毕设日志day5]大疆tello 手势识别控制
下一篇: [发疯毕设日志day6]火影结印使大疆tello起飞——数据集采集和yolov5模型训练
叫我Python小朋友
博客等级 码龄6年 128粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值