Socket通信でサーバ(Python)からクライアント(Python)に画像を転送してOpenCVで扱う
サーバ側
import socketserver
import cv2
import numpy
import socket
import sys
import random
class TCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
frame = cv2.imread("test.png")
pngstring = cv2.imencode(".png", frame)[1].tobytes()
self.request.send(pngstring)
HOST = 'localhost'
PORT = 12345
socketserver.TCPServer.allow_reuse_address = True
server = socketserver.TCPServer((HOST, PORT), TCPHandler)
try:
server.serve_forever()
except KeyboardInterrupt:
pass
server.shutdown()
sys.exit()
クライアント側
import socket
import numpy
import cv2
HOST = 'localhost'
PORT = 12345
def get_image():
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.send(('a').encode("utf-8"))
buf = b''
rxlen = 100
while rxlen > 0:
rxstr = sock.recv(1024)
rxlen = len(rxstr)
buf += rxstr
sock.close()
narray = numpy.frombuffer(buf, dtype = 'uint8')
return cv2.imdecode(narray, 1)
while True:
im = get_image()
cv2.imshow('Capture', im)
if cv2.waitKey(500) & 0xFF == ord('q'):
break
get_image()
ディスカッション
コメント一覧
まだ、コメントがありません