首页 > 其他分享 >【大疆Tello无人机图传+使用YOLOv5检测】

【大疆Tello无人机图传+使用YOLOv5检测】

时间:2024-10-20 12:18:28浏览次数:3  
标签:__ Tello YOLOv5 self cv2 drone 大疆 camera import

B站视频demo:https://www.bilibili.com/video/BV1ZvytYZEqM/

代码使用注意事项:

  1. 运行前,已连接Tello无人机的WIFI,并确保公用网络的防火墙已关闭!
  2. self.model = 替换为自己的模型路径!

视频demo代码如下:

import threading
import time
import cv2
import torch
import robomaster
from robomaster import robot
from robomaster.battery import TelloBattery as Battery
from queue import Queue


"""注意事项:
1. 运行前,已连接Tello无人机的WIFI,并确保公用网络的防火墙已关闭!
2. self.model = 替换为自己的模型路径!
"""

# For “NotImplementedError: cannot instantiate 'PosixPath' on your system" bug
import pathlib
temp = pathlib.PosixPath
pathlib.PosixPath = pathlib.WindowsPath
robomaster.config.LOCAL_IP_STR = "192.168.10.2"


class Tello():
    def __init__(self,):
        """Initializes the YOLOv5 Detections class with image info, predictions, filenames, timing and normalization."""
        super().__init__()
        # 模型初始化
        self.model = torch.hub.load(r'./', 'custom', path=r"runs/train/exp4/weights/best.pt", source="local")  # 替换为自己的模型路径)

        # 无人机初始化
        self.drone = robot.Drone()
        self.drone.initialize()
        # 电池初始化
        self.battery = Battery(self.drone)
        # 相机初始化
        self.camera = self.drone.camera
        self.camera.stop_video_stream()
        self.camera.start_video_stream(display=False)
        self.camera.set_fps("high")
        self.camera.set_resolution("high")
        self.camera.set_bitrate(6)

    def infer(self):
        # 使用YOLOv5模型进行推理tello回传的视频流
        img = self.camera.read_cv2_image(strategy="newest")
        fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 指定视频编码器
        video_writer = cv2.VideoWriter('output.mp4', fourcc, 30.0, (img.shape[1], img.shape[0]))  # 创建视频写入对象
        while True:
            img = self.camera.read_cv2_image(strategy="newest")    #直接读取最新帧,采用="pipeline"会在第二次启动时卡死
            results = self.model(img)     # Inference
            # results.print()
            image = results.show_cv()
            cv2.imshow('results', image)
            # 写入当前帧到视频文件
            video_writer.write(image)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
            if not q.empty() and q.get()["close"]:
                break
        video_writer.release()
        cv2.destroyAllWindows()
        print("infer end")

    def get_verson(self):
        # 获取飞机版本信息
        print("Drone sdk version: {0}".format(self.drone.get_sdk_version()))
        # 获取飞机SN信息
        print("drone sn: {0}".format(self.drone.get_sn()))

    def get_battery(self):
        # 获取飞机电量信息
        print("Battery: {}%".format(self.battery.get_battery()))

    def close(self):
        # 结束:释放资源
        self.camera.stop_video_stream()
        self.drone.close()


if __name__ == "__main__":
    q = Queue(100)
    # 初始化
    tello = Tello()
    tello.get_battery()

    # YOLO推理线程
    recv_thread = threading.Thread(target=tello.infer)
    recv_thread.daemon = True
    recv_thread.start()

    # 主线程:用于实现预定动作
    time.sleep(6)
    q.put({"close":True})

    # 结束
    time.sleep(1)      # 延迟1s,确保两个线程都正常结束
    tello.close()

标签:__,Tello,YOLOv5,self,cv2,drone,大疆,camera,import
From: https://blog.csdn.net/python_yjys/article/details/143090445

相关文章

  • YOLOv5: 原理与源码
    视频链接:YOLOv5:原理与源码_哔哩哔哩_bilibili 《YOLOv5:原理与源码》课程致力于帮助学生学习YOLOv5目标检测算法的原理与源码。常心老师将手把手从0开始解读YOLOv5-v6.0工程目录结构,解读YOLOv5-v6.0的Backbone,Neck,Head网络结构原理与源码,解读训练全流程的原理与源码,解读推......
  • 使用飞浆ai训练yolov5
    使用飞浆ai训练yolov5飞浆ai创建项目安装环境数据集训练在yolov5目录下创建一个data.yaml,可改名因为包安装不在python的路径下,需要在py文件中添加如下命令可以导入包的位置然后可以再终端中执行训练命令参数:训练结束预测数据参数最简单的检测命令创新、修改飞浆ai......
  • 20240811 大疆创新 笔试
    文章目录1、选择题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、多选题2.12.22.32.42.52.62.72.82.92.103、判断题3.13.23.33.43.53.63.73.83.93.104、编程题4.14.24.3......
  • YOLO系列:YOLOv5总结
    介绍2020年6月25日,Ultralytics发布了YOLOV5的第一个正式版本,其性能与YOLOV4不相伯仲,同样也是现今最先进的对象检测技术,并在推理速度上是目前最强,yolov5按大小分为四个模型yolov5s、yolov5m、yolov5l、yolov5x。操作流程图如下:环境配置Anaconda+Pycharm安装好所需版本的A......
  • 基于yolov5的手机屏幕缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、pytho
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:yolov5,手机屏幕缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili(一)简介基于YOLOv5的手机屏幕缺陷检测系统是在PyTorch框架之下得以实现的。这是一个完备的项目,涵盖......
  • yolov5,v8船舰识别检测(包含训练代码Pyqt源码超详细)
    前言:随着海上活动的增加,对船舰进行实时、准确的检测与识别成为了海上安全、海洋监测、海事管理等领域的迫切需求。传统的船舶识别方法主要依赖于船舶自动识别系统(AIS)和雷达等通信导航设备,但这些方法存在一定的局限性,例如目标误识别、目标丢失和易受环境噪声为海上船只的自动......
  • 基于yolov8、yolov5的烟雾检测系统(含UI界面、训练好的模型、Python代码、数据集)
    项目介绍项目中所用到的算法模型和数据集等信息如下:算法模型:  yolov8、yolov8+SE注意力机制或yolov5、yolov5+SE注意力机制,直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有GPU,无法自行训练。数据集:  网上下载的数据集,格式都已......
  • 教你从零开始在MaixCam上部署自己本地训练的Yolov5模型(5)- 转换格式并部署为app
    本博客会从一个从未部署过任何环境的电脑上一步步复现如何本地训练自定义模型并成功部署到Maixcam上实现数字识别的功能。文章中会引用到我当时学习是参考到的文章,都会在下面列出来,在此对这些向我提供过帮助的博主表示感谢!!本文中默认读者已经了解过相对应的知识,一些非常......
  • 大疆Osmo Action 5 Pro深度评测:旗舰级运动相机画质再升级
    大疆自去年夏天推出OsmoAction4运动相机以来,凭借其出色的稳定性和优质的影像表现在极限运动用户和Vlog创作者中赢得了极高的评价,成为了许多人拍摄运动场景和日常生活的首选设备。而如今,经过几代产品的积累,大疆OsmoAction运动相机系列终于推出了全新的旗舰级产品——OsmoAction......
  • 大疆深信服提前批等科技公司笔试总结
    前言关注我持续更新大疆笔试单选题单选题考的很广计组,计网,计算机系统,Python的numpy包,以及一些常用的接口,软件测试的黑/白盒测试软件测试开始于哪个阶段?软件设计还是啥,我选的软件设计阶段,其实后面的大题有考一个角度为15π/180的角度,一条线按照矩阵[(cos15°,-sin15°......