Tello の画像をOpenCVでPCに写してみる!!OpenCVの導入方法
Tello の画像をOpenCVでPCに写してみる!!OpenCVの導入方法

Tello の画像をOpenCVでPCに写してみる!!OpenCVの導入方法

いよいよ面白くなりTelloを飛ばすことはできましたが、本来の機能であるカメラ画像の送信が生かされていない( ;∀;)

まだお持ちでない方、2台目希望の方 プログラミングドローン ”Tello” の購入はこちら

ドローンのプログラミングでどうやって画像をPCに送信したらいいだろう? YouTubeをたまたまみていたTechの部屋に出会いました。しかし私はプログラミング初心者でしかもTechの部屋のPCはMAC かなり勉強になりましたが、私はPCはWindowsでしたので、参考にして我流でしてみました。オープンソースGitHub Tech の部屋「Pythonで小型ドローン Tello EDU を飛ばす!」サンプルプログラムからダウンロードできます。

まずOpenCvのダウンロードからです。


OpenCV(正式名称: Open Source Computer Vision Libraryとはオープンソースコンピューター・ビジョン・ライブラリです。コンピューターで画像や動画を処理するのに必要な、さまざま機能が実装されており、BSDライセンスで配布されていることから学術用途だけでなく商用目的でも利用できます。加えて、マルチプラットフォーム対応されているため、幅広い場面で利用されていることが特徴です。

画像処理 (Image Processing)構造解析 (Structural Analysis)モーション解析と物体追跡 (Motion Analysis and Object Tracking)物体検出 (Object Detection)などが可能です。

OpenCvのダウンロード

リリースのウインドウズをクリックしダウンロードします。ダウンロードしたら展開してopencvのフォルダーをCドライブの直下に置きます。OPENCVのファイルの中のbild→x64→vc15→binを開きこのアドレスをコピーし、コントロールパネルから

システム&セキュリティのシステム環境変数に追加するため、Pathに先ほどコピーしたアドレスを追加します。

pythonでopencvを使いたいので opencv-pythonpipを使用してインストールできます。

インストールする場合は以下のコマンドを使用します。

pip install opencv-python

コマンドプロンプトからですがアプリの右クリックで管理者として実行で起動させます。

オープンソースGitHub Tech の部屋「Pythonで小型ドローン Tello EDU を飛ばす!」サンプルプログラムからダウンロードしたファイル cli.py(先のTello3.pyと同じプログラム) & vc.py(画像送信プログラム)

OpenCVが使われている箇所を強調してみました。

#vc.pyの内容は以下の通りです。

Tello Python3 Control Demo

http://www.ryzerobotics.com/

1/1/2018

Modified by MPS

#

import threading
import socket
import time
import cv2                  ⇒ ここでOpenCVがインポートされている

host = ”
port = 9000
locaddr = (host, port)

Create a UDP socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

tello_address = (‘192.168.10.1’, 8889)

sock.bind(locaddr)

def recv():
while True:
try:
data, server = sock.recvfrom(1518)
print(data.decode(encoding=”utf-8″))
except Exception:
print(‘\nExit . . . RECV\n’)
break

print(‘\r\n\r\nTello Python3 Demo.\r\n’)

print(‘Tello: command takeoff land flip forward back left right \r\n up down cw ccw speed speed?\r\n’)

print(‘end — quit demo.\r\n’)

recvThread create

recvThread = threading.Thread(target=recv)
recvThread.start()

sock.sendto(b’command’, tello_address)
print(‘command ok’)
time.sleep(0.5)
sock.sendto(b’streamon’, tello_address)
print(‘stream on’)
time.sleep(1)
sock.close()

cap = cv2.VideoCapture(“udp://%s:%s?overrun_nonfatal=1&fifo_size=50000000” % (‘192.168.10.1’, ‘11111’))       #ここでビデをキャプチャーでTelloのカメラから画像受信

print(‘start cap’)
while True:
try:
ret, frame = cap.read()
if ret:
cv2.imshow(‘tello’, cv2.resize(frame, (360, 240)))     #受信画像を画面表示
cv2.waitKey(1)
except KeyboardInterrupt:
cv2.destroyAllWindows()
cap.release()
print(‘\nExit . . .\n’)
break


をデスクトップでも貼り付けます。

あとは 各ファイルを実行できるようにコマンドプロンプトを2つ起動させます。

それでは、準備が整いましたので 2つのプログラムを同時に実行させてみます。動画をとってますので御覧ください。

次にOpenCvによる顔認識の仕方こちらへどうぞ!!

PCでOpenCVでと顔認識して遊んででみる。

トレンドアイテム60万点以上 | ファッションブランド【SHEIN】

マッキーの趣味のドローン YouTube channel

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です