前回までの記録
前々回から停まれの標識を検知するプログラムを作成しています.前回はその停まれ標識を検知した時に可視化する為のプログラムとしてとりあえず家にある椅子を検知した時にそれをいつ検知したかを記録するプログラムを作成しました.
今回は検知した時に別プログラムへソケット通信をするプログラムを作成していきます.
実現するべき機能
・椅子が検知した時にソケット通信を行う.
※socket通信に関しては以下の記事を参考にさせていただきました.
とりあえず即興で作ったのでserver.pyは丸々同じです.
※一応これらの機能は既存のyolov5のdetect.pyに実装しています.
実装したコード
※前回のコードにほんの少し手を加えただけです.
クライアント側
if label1=="chair":
print("椅子を検知しました.")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s2:
s2.connect(('127.0.0.1', 50007))
s2.sendall(b'isukenti')
data = s2.recv(1024)
server側
# socket サーバを作成
import socket
# AF = IPv4 という意味
# TCP/IP の場合は、SOCK_STREAM を使う
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# IPアドレスとポートを指定
s.bind(('127.0.0.1', 50007))
# 1 接続
s.listen(1)
# connection するまで待つ
while True:
# 誰かがアクセスしてきたら、コネクションとアドレスを入れる
conn, addr = s.accept()
with conn:
while True:
# データを受け取る
data = conn.recv(1024)
if not data:
break
print('data : {}, addr: {}'.format(data, addr))
# クライアントにデータを返す(b -> byte でないといけない)
conn.sendall(b'Received: ' + data)
##次回へ
次は本格的に可視化する部分を作っていきたいと思います.具体的にはまだ停まれの標識は使いませんが,椅子を検出したときに音声合成を使って「椅子を検知しました」ってしゃべるようなプログラムを考えています.
後,できれば目で見てわかる可視化部分も考えていきたいなと考えています.
##おまけ
一応,今は椅子でやっていて停まれの標識を使ったことをやってないじゃないかと思う人もいるかもしれないので一応!
停まれの標識でも今やっていることは実現できますが,家の中に停まれの標識はないので実験ができません.
なので,外に持っていく前に必要な機能を備えたいのでとりあえず座っている椅子を検知させています.
必要な機能が実装できるまで停まれ看板検知はお待ちください.なお,モデルのできについてなどは前記事に書いてあります.
一応最終的な目標地点は,地図とこのプログラムを連携させてなんかやりたいなとか思っています.
以上です.