控制Tello无人机扫描条形码「建议收藏」

控制Tello无人机扫描条形码「建议收藏」一直想玩无人机,之前租了一个大疆的发现禁飞。好在最近发现了Tello,买来过了一把瘾。顺便试了下集成条形码扫描功能。现在有很多仓储管理会用到无人机来扫码做库存盘点。Python3控制Tello无人机DJI的官方GitHub仓库里已经放了示例代码dji-sdk/Tello-Python。不过这份代码只能支持Python2.7,而且也好久无人维护。要在Python3上运行这份代码需要做些修改。首先获取源码:gitclonehttps://github.com/dji-sdk/Tello-Py

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一直想玩无人机,之前租了一个大疆的发现禁飞。好在最近发现了Tello,买来过了一把瘾。顺便试了下集成条形码扫描功能。现在有很多仓储管理会用到无人机来扫码做库存盘点。

在这里插入图片描述

Python 3控制Tello无人机

DJI的官方GitHub仓库里已经放了示例代码dji-sdk/Tello-Python。不过这份代码只能支持Python 2.7,而且也好久无人维护。要在Python 3上运行这份代码需要做些修改。

首先获取源码:

git clone https://github.com/dji-sdk/Tello-Python.git

在vscode中打开工程,通过全局查找替换以下部分:

# 2.7
import Tkinter
# 3.7
import tkinter
 
# 2.7
print ""
# 3.7
print()
 
# 2.7
packet_data = ""
# 3.7
packet_data = bytes()

另外,h264解码库需要重新编译成Python 3的版本。我的环境是Windows,首先下载编译vcpkg:

git clone https://github.com/microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat

然后通过vcpkg安装ffmpeg

vcpkg.exe install ffmpeg:x64-windows

接下来编译h264解码库的Python模块:

git clone https://github.com/DaWelter/h264decoder.git
cd h264decoder
python setup.py build_ext --cmake-args="-DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake"

现在可以用Python 3正常运行Tello的示例代码了:

python3 main.py

集成Python条形码识别SDK

条形码识别会占用CPU,如果运行在Python的线程中,由于Python的GIL会导致视频流卡顿。用Dynamsoft Python条形码识别SDK可以避免这种情况。因为提供的视频流解码接口是运行在C/C++线程上的:

  • start_video_mode()
  • append_video_frame()
  • stop_video_mode()

安装Python barcode SDK:

pip install dbr

tello.py文件中创建BarcodeReader对象:

from dbr import *
self.reader = BarcodeReader()
self.reader.init_license('LICENSE-KEY') # 获取license: https://www.dynamsoft.com/customer/license/trialLicense

设置参数以及回调函数:

parameters = self.reader.init_frame_decoding_parameters()
self.frameWidth = 640 # max: 960
self.frameHeight = 480 # max: 720
self.results = None
parameters.image_pixel_format = EnumImagePixelFormat.IPF_RGB_888
parameters.max_queue_length = 2
parameters.max_result_queue_length = 2
parameters.width = self.frameWidth
parameters.height = self.frameHeight
parameters.stride = self.frameWidth * 3
parameters.auto_filter = 1
self.reader.start_video_mode(parameters, self.on_barcode_result)

已知Tello的摄像头是720P的。我准备把得到的图像缩小到640×480。

在回调函数中保存结果,用于UI绘制:

def on_barcode_result(self, data):
    self.results = data

找到视频流接收函数_receive_video_thread()。把获得的帧缩小并放到解码队列里:

for frame in self._h264_decode(packet_data):
    self.frame = cv2.resize(frame, (self.frameWidth, self.frameHeight))
 
    try:
        ret = self.reader.append_video_frame(self.frame)
    except:
        pass

最后在析构函数中调用stop_video_mode()

def __del__(self):
    self.reader.stop_video_mode()

测试

我在办公室里做了测试。从显示效果来看,不是很理想,在光线较差的环境中,图像没有对焦:

在这里插入图片描述
此外,悬停也会出现问题。Tello无人机在办公室里悬停会漂移。

源码

https://github.com/yushulx/tello-drone

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170561.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • http://oncenote.com/2015/09/16/Security-2-HTTPS2/ (轉載)

    http://oncenote.com/2015/09/16/Security-2-HTTPS2/ (轉載)上一篇《iOS安全系列之一:HTTPS》被CocoaChina转载,还顺便上了下头条:打造安全的App!iOS安全系列之HTTPS,但那篇文章只是介绍了比较偏应用的初级知识,对于想要深入了解HTT

    2022年7月2日
    26
  • Typescript教程_安装typescript

    Typescript教程_安装typescript前言由于最近在使用vue3写项目,使用vue3的前提就是要学习TypeScript,TypeScript算是JavaScript的升级版,TypeScript包含JavaScript和自己的一些特性

    2022年7月29日
    10
  • xgboost入门与实战(原理篇)

    xgboost入门与实战(原理篇)xgboost入门与实战(原理篇)前言:xgboost是大规模并行boostedtree的工具,它是目前最快最好的开源boostedtree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案。在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN,MPI,SungridEn

    2022年4月30日
    57
  • C++和Java怎么选择,哪个好找工作?

    C++和Java怎么选择,哪个好找工作?Java和C++各有各的优势,至于选择什么方向要看你的兴趣爱好,只要你基础扎实我相信找工作都不难,而且语言都是相通的。从两者语言入门来说:Java入门相对简单,C++入门相对难,精通更难! 从学习侧重来说:Java侧重于企业级应用开发,C++则注重底层应用开发。 从就业来说:C++前期工资要高,工作机会少。Java招聘多,工作机会多。 从前景来说:Java、C++长期在编程排行榜前几位,所以学习哪个都可以。 从未来来说:无论你学习Java还是学习C++,只要有多年的经验,工资都会高,不过在工作期

    2022年7月7日
    21
  • origin 2018安装教程与安装包

    origin 2018安装教程与安装包百度网盘地址:链接:https://pan.baidu.com/s/11Lo7R4YvldtkcKZxb5vbXQ提取码:aq8o这里是安装包大概1.8G,比较大。如果链接失效可以联系我913121976@qq.com邮箱。有什么问题可以一起交流!1、打开安装文件夹里的setup,进行安装。点击下一步2、同意许可,下一步。点击下一步3、客户信息,前两个可以随便填写,第三个…

    2022年4月27日
    128
  • flash的计算机知识,Flash CS6计算机动画设计教程[通俗易懂]

    flash的计算机知识,Flash CS6计算机动画设计教程[通俗易懂]FlashCS6计算机动画设计教程语音编辑锁定讨论上传视频《FlashCS6计算机动画设计教程》是2014年中国铁道出版社出版的图书,作者是耿增民、刘正东、孙晓东、陈春丽。书名FlashCS6计算机动画设计教程作者耿增民刘正东孙晓东陈春丽ISBN9787113179380页数200出版社中国铁道出版社出版时间2014-03-01装帧平装开本16开版…

    2022年5月8日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号