tello-鍵盤控制+實時鏡頭+一鍵拍照

 tello-鍵盤控制+實時鏡頭+一鍵拍照




先在pycharm設置裡安裝所須的函式庫
需要用的幾個庫如下:

  • djitellopy2 DJITelloPy庫
  • pygame 獲取鍵盤按鍵
  • opencv-python 獲取無人機的攝像頭視頻



然後在keyboardModule.py的檔裡寫調用的程式碼
這個程式碼是用於建立一個調控窗並能判斷任何按鍵
被按下的狀態
import pygame
import pygame.event


def init():
pygame.init()
win = pygame.display.set_mode((400, 400))
def getKey(keyName):
s = False
for event in pygame.event.get():
if event.type == pygame.QUIT:
pass
mykey = pygame.key.get_pressed()
keyName = getattr(pygame, "K_{}".format(keyName))
if mykey[keyName]:
s = True
pygame.display.update()
return s

if __name__ == "__main__":
init()
keyboardControl.py裡貼上以下程式
import keyboardModule as kb
from djitellopy import tello
from time import sleep
import cv2, time

mytello = tello.Tello()
mytello.connect()
print("目前電池電量: {}%".format(mytello.get_battery()))
mytello.streamon()
kb.init()

def getKeyboardInput():
lr, fb, ud, yv = 0, 0, 0, 0
speed = 30
if kb.getKey("q"):
mytello.land()
elif kb.getKey("z"):
mytello.takeoff()

if kb.getKey("LEFT"):
print(kb.getKey("LEFT"))
lr = speed
elif kb.getKey("RIGHT"):
print(kb.getKey("RIGHT"))
lr = -speed

if kb.getKey("UP"):
print(kb.getKey("UP"))
fb = speed
elif kb.getKey("DOWN"):
print(kb.getKey("DOWN"))
fb = -speed

if kb.getKey("w"):
print(kb.getKey("w"))
ud = speed
elif kb.getKey("s"):
print(kb.getKey("s"))
ud = -speed

if kb.getKey("a"):
print(kb.getKey("a"))
yv = speed
elif kb.getKey("d"):
print(kb.getKey("d"))
yv = -speed

if kb.getKey("p"):
cv2.imwrite(r"saveImg/{}.jpg".format(time.time()), img)
sleep(0.5)
return [lr, fb, ud, yv]

while True:
val = getKeyboardInput()
print(val)
lr, fb, ud, yv = val[0], val[1], val[2], val[3]
mytello.send_rc_control(lr, fb, ud, yv)
img = mytello.get_frame_read().frame
img = cv2.resize(img, (360, 240))
cv2.imshow("Mytello", img)
cv2.waitKey(1)
sleep(0.05)



























































留言

張貼留言

這個網誌中的熱門文章

初體驗tello-大疆無人機用python控制前進/後退/左/右飛