I am connecting to client-2 from client-1 and client-2 to server. I am sending frames from the client-1 to client-2 and on client-2, I am performing prediction and sending the result to the server.I have the following code.
Client-1 code:
context = zmq.Context()
footage_socket = context.socket(zmq.PUB)
footage_socket.connect('tcp://172.168.1.2:5555')
videoFile = 'data.mp4'
camera = cv2.VideoCapture(videoFile)
length=int(camera.get(cv2.CAP_PROP_FRAME_COUNT))
print(length)
count=0
#time.sleep(2)
while True:
grabbed, frame = camera.read()
count+=1
print(count)
try:
frame = cv2.resize(frame, (224, 224))
except cv2.error:
break
encoded, buffer = cv2.imencode('.jpg', frame)
jpg_as_text = base64.b64encode(buffer)
footage_socket.send(jpg_as_text)
Client-2 code:
context = zmq.Context()
footage_socket = context.socket(zmq.SUB)
footage_socket.bind('tcp://0.0.0.0:5555')
footage_socket.setsockopt_string(zmq.SUBSCRIBE, np.unicode(''))
while True:
frame = footage_socket.recv_string()
img = base64.b64decode(frame)
npimg = np.fromstring(img, dtype=np.uint8)
source = cv2.imdecode( npimg, 1 )
frame=cv2.resize(source,(224,224)).astype("float32")
image = img_to_array( source)
image = image.reshape( (1, image.shape[0], image.shape[1], image.shape[2]) )
image = preprocess_input( image )
preds = model.predict(image)
##connecting to server##
context1=zmq.Context()
footage_socket=context1.socket(zmq.PUB)
footage_socket.connect('tcp://192.168.56.103:9999')
footage_socket.send(preds)
print('sending to server')
Server code:
context = zmq.Context()
footage_socket = context.socket(zmq.SUB)
footage_socket.bind('tcp://0.0.0.0:9999')
footage_socket.setsockopt_string(zmq.SUBSCRIBE, np.unicode(''))
while True:
frame = footage_socket.recv_string()
img = base64.b64decode(frame)
#print(img)
On client-2 I am receiving the below error
frame = footage_socket.recv_string()
File "/usr/local/lib/python3.5/dist-packages/zmq/sugar/socket.py", line 583, in recv_string
msg = self.recv(flags=flags)
File "zmq/backend/cython/socket.pyx", line 790, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 826, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 193, in zmq.backend.cython.socket._recv_copy
File "zmq/backend/cython/socket.pyx", line 188, in zmq.backend.cython.socket._recv_copy
File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc
zmq.error.ZMQError: Operation not supported