LoginSignup
5
4

More than 3 years have passed since last update.

【EV3 x Python】mjpg-streamerを使ってPCにカメラ映像をストリーミングする.

Last updated at Posted at 2020-01-13

概要

ev3からmjpg-streamerを使ってカメラ映像をストリーミングする手順を紹介します.ev3devではソフトウェアの導入のみでストリーミングサーバーをセットアップできます.PC側でOpenCVを使って映像を表示するコードを作ります.

前提

  • PC : mac (macOS Mojave 10.14.6)
  • EV3 (ev3dev)
  • vscode
  • opencv-pythonインストール済み

MJPG-streamerのインストール

MJPG-streamerをインストールためにapt-getを使いますが,デフォルトの設定のまま,メモリ不足で失敗することがあるのであらかじめスワップ領域を作成してください.やり方はこの記事を参考に作成してください!
【EV3 x Python】スワップ領域を作成する方法

そもそもターミナルの開き方がわからない方は↓
【EV3 x Python】SSH接続をする

ターミナルで以下のコマンド上から入れていく.パスワードを聞かれたらmaker

$ cd ~
$ sudo apt-get install -y cmake libv4l-dev libjpeg-dev imagemagick
$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make
$ sudo make install 

MJPG-streamerを実行

$ cd ~/mjpg-streamer/mjpg-streamer-experimental/
$ ./mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.so"

PCのブラウザでev3にアクセスすると画像が表示される

EV3を接続しているPCのブラウザでhttp://ev3dev.local:8080 にアクセスするとストリーミングのページが開かれます.
スクリーンショット 2020-01-14 2.38.12.png
汚い部屋でごめんなさいw

Pythonで映像を映し出すスクリプトを組む

streaming.py
from cv2.cv2 import VideoCapture,waitKey,imshow,destroyAllWindows

# 映像が送られてくるリンクを指定する.
cap = VideoCapture("http://ev3dev.local:8080/?action=stream")

# リンクが開けなかった場合
if not cap.isOpened():
    print("Cannot open a video capture.")
    exit(-1)


while True:
    # escキーが押されたらループ終了
    k = waitKey(1)

    if k == 27:
        break

    # 送られてくる映像のフレームを取得する
    ret, frame = cap.read()

    # もしフレームが取得できなかった場合
    if not ret:
        continue

    # フレームを表示する
    imshow("EV3 Streaming", frame)

# キャプチャーの開放&ウィンドウを閉じる
cap.release()
destroyAllWindows()

実行結果

スクリーンショット 2020-01-14 2.42.58.png
汚い部屋ですみませんm(_ _)m

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4