C++ sending below struct msgpack over zeromq.
How can I deserialize from Python?
msgpack::sbuffer serialize(cv::Mat &img, std::string &msg)
{
Image img_data;
img_data.matrix = std::vector<uchar>(img.data, img.data + (img.rows * img.cols * img.channels()));
img_data.rows = img.rows;
img_data.cols = img.cols;
img_data.type = img.type();
img_data.msg = msg;
msgpack::sbuffer serialized_img;
msgpack::pack(&serialized_img, img_data);
return serialized_img;
}
Receiving bytes:
import zmq
import msgpack
from io import BytesIO
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect('tcp://10.144.207.139:5555')
socket.setsockopt(zmq.SUBSCRIBE, b"")
while True:
print ("Waiting for message")
message = socket.recv()
print ("message received: " + str(message) )
key is the :
print ("Waiting for message")
message = socket.recv()
deser_message = msgpack.unpackb(message, raw=False)
image = np.array(Image.open(io.BytesIO(deser_message[0])))
cv2.imshow("received image" , image)
cv2.waitKey(1)
print ("message received: " , counter)
counter += 1