0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EV3(leJOS)でカメラの映像をPCに送って顔認識をする①

Last updated at Posted at 2020-01-13

概要

leJOSはEV3専用のJVM(Java Virtual Machine)です.この記事ではEV3に繋げたカメラの映像をネットワーク経由でPCに送信し,OpenCVを使って顔認識をするところまでの手順を説明します.その応用例はこの記事を読んでいるアタナ次第です!

環境

  • LEGO mindstorms EV3
  • leJOS 0.9.1-beta
  • カメラ(本記事では,ロジクール ウェブカメラ C270で動作確認済 )・・・カメラは対応しているものが限られているのでこれ以外のものを使う場合はよく調べてから用意してください.

まずはEV3のカメラの映像をPCに送る

EV3に繋がれたカメラからフレームを取得しソケット通信でPCに送る.行数が多くなるのでimport文は省略しています.(ちなみに,著者はeclipseを使っているので使用しているので,import文はほぼ全てeclipseにまかせています.)

EV3側のプログラム

Stream.java
public class Stream {
	private static final int WIDTH = 160;//フレームの横幅
	private static final int HEIGHT = 120;//フレームの縦幅
	private static final String HOST = "192.168.2.1";//サーバーのアドレス(ここではPCのIPアドレス)
	private static final int PORT = 55555;//ポート番号(任意)

	public static void main(String[] args)  {

        EV3 ev3 = (EV3) BrickFinder.getLocal();//EV3本体
        Video video = ev3.getVideo();//カメラ

        try {
         //カメラをオープンして使える状態にする.
	        video.open(WIDTH, HEIGHT);
	    } catch (IOException e) {
                e.printStackTrace();
	        return;
	    }
        //フレームを取得する.
        byte[] frame = video.createFrame();

        //ソケットの準備
        Socket sock;
        BufferedOutputStream bos;
        try {
            sock = new Socket(HOST, PORT);
            bos = new BufferedOutputStream(sock.getOutputStream());
        }catch (IOException e) {
            e.printStackTrace();
            return;
        }

        //Escapeボタンが押されるまで繰り返す.
        while(Button.ESCAPE.isUp()) {
            try {
                video.grabFrame(frame);//現在のフレームを取得する
                bos.write(frame);//BufferedOutputStreamに書き込む
                bos.flush();//バッファの内容を出力する
            } catch (IOException e) {
                break;
            }
        }
        //プログラムの最後にはopenしたものをすべてcloseする.
        try {
        bos.close();
        sock.close();
        video.close();
     } catch (IOException e) {
        return;
     }
    }
}
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?