我想将通过opencv导入的图像通过套接字发送到另一台计算机。但是接收的数据和发送的数据不相等。
我已经转换了通过读取获得的numpy数组数据,并将其转换为字节数组,以便通过套接字发送。接着 我已经将另一端收到的字节数组转换回了numpy数组。但是我无法从接收到的数据中查看图像。
这是发件人端的代码段
im = cv2.imread('view.jpg')
stringimage = np.array_str(im)
byteimage = str.encode(stringimage)
sock.sendto(byteimage,("127.0.0.1",5002))
这是接收器端的代码段
byteimage,addr = sock.recvfrom(1024)
decoded = bytes.decode(byteimage)
backstring = np.array(decoded)
cv2.imshow('RealSense',backstring)
cv2.waitKey(0)
我收到此错误
TypeError:不支持mat数据类型= 19
此行代码
cv2.imshow('RealSense',backstring)
更新
在获得建议之后,并参考了其他一些材料,我想出了一个适用于我的方案的解决方案。
图像发送方
#color_image is my opencv image
retval,data = cv2.imencode('.jpg',color_image,ENCODE_PARAMS)
b64_bytes = base64.b64encode(data)
b64_string = b64_bytes.decode()
sock.sendto(str.encode(b64_string),5002))
图像接收器端
data,addr = sock.recvfrom(60000)
img = imread(io.BytesIO(base64.b64decode(data)))
请告诉我我的解决方案中是否存在任何错误的编码