2
1

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.

ssh 接続で openCV の開発

Last updated at Posted at 2019-09-06

概要

ssh 接続で Raspberry Pi に接続した上で、画像でのデバックが必要な openCV の開発をするためのシェルスクリプトを書いた。

環境

  • ubuntu 18.04 LTS
  • Raspberry Pi 2

プログラムの大まかな流れ

1.同一ネットワーク内の Raspberry Pi を検索。
2.プログラムファイルを scp でローカルからリモートにコピー。
3. ssh 接続をし,Raspberry Pi でプログラムを実行。
4.出力された画像ファイルを scp でリモートからローカルにコピー。
5.コピーした画像ファイルを表示。

プログラム

ssh_opencv_developer.sh
# !/usr/bin/bash

# エラーが発生したときは実行を中断
# 存在しない変数はエラー
set -eu

macadress='00:00:00:00:00:00'#Raspberry Pi 3 以降の場合は、'Raspberry'でも可
password='password'

filename='main.py'
local_path='/home/hoge/'${filename}
remote_path='/home/pi/'${filename}

# 同一ネットワーク内の Raspberry Pi を取得
echo '同一ネットワーク内の Raspberry Pi を検索しています。'
list=$(arp-scan --localnet --interface wlan0 | grep ${macadress} )
ip=$(echo ${list} | cut --delimiter " " --fields 1)

# ファイルのコピー
# ディレクトリごとコピーする場合は-rオプションを使う
echo 'ローカルからリモートにファイルを転送します。'
sshpass -p ${password} scp ${local_path} pi@${ip}:${remote_path}

# Raspberry Pi にログインしコマンドを実行したのちログアウト
echo 'ssh 接続でリモートに接続しコマンドを実行します。'
sshpass -p ${password} ssh -t pi@${ip} 'sudo python /home/pi/main.py && exit'

filename='photo.jpg'
local_path='/home/hoge/'${filename}
remote_path='/home/pi/'${filename}

# ファイルのコピー
# ディレクトリごとコピーする場合は-rオプションを使う
echo 'リモートからローカルにファイルを転送します。'
sshpass -p ${password} scp pi@${ip}:${remote_path} ${local_path}

display ${local_path}

使用方法

サンプルとして以下のプログラムを例にして説明する。
以下のプログラムはウェブカメラで取得した画像をホームディレクトリに保存するというプログラムである。

main.py
# -*- coding: utf-8 -*-
import cv2

cap = cv2.VideoCapture(0)
ret, img = cap.read()

# 平滑化により外乱除去
img = cv2.medianBlur(img, 5)

# グレースケールへ変換
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 絶対パスで指定して下さい。プログラムが正常に動作しない場合があります。
path = "/home/pi/photo.jpg"
cv2.imwrite(path, img)

以下のようにシェルスクリプトを実行することで、リモートでプログラムが実行され、出力された画像がローカルで表示される。

terminal_on_local_computer
sudo sh ssh_opencv_developer.sh

ssh_opencv_developer.png

結果

ssh 接続で openCV の開発が出来るようになった。

追記(2019/11/21)

異なるホスト間のファイル同期ではrsyncコマンドを使いましょう。

2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?