我想把经过处理的图像从python后端发送到C#前端。 所以我用JPG编码器编码并发送。在
当我接收到它并使用C#中的JPEG解码器解码它时,它会抛出异常。其中接收字节的大小等于编码后发送的字节。在
有人能告诉我如何解码和显示这个图像吗。在
Python服务器端编码图像JPG的代码
while True:
conn, addr = s.accept()
print ('connected to : ' + addr[0] +" :"+ str(addr[1]))
vidcap = cv2.VideoCapture(videoPath)
total_frames = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT))
conn.setblocking(0)
for mm in range(0,total_frames ,1):
try:
dataClient = str(conn.recv(4096).decode('UTF-8'))
conn.send(str.encode(dataClient))
conn.close()
kk=2
break
except socket.error:
ret,img= vidcap.read()
image = cv2.resize(img, (640, 480))
#############################################
encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),100]
result,enData=cv2.imencode('.jpg',image,encode_param)
conn.send(enData)
#############################################
客户端解码图像JPG中的C代码
^{pr2}$
这行代码创建一个空的内存流,初始容量为
bytesRead
字节。见MemoryStream(int)您需要使用另一个构造函数来用接收到的数据填充它:
^{pr2}$见MemoryStream(Byte[])
请注意john对您接收代码的评论:
TcpClient.ReceiveBufferSize
有一个default value 8KB。如果jpeg数据的字节数超过这个值,因为c代码只读取缓冲区一次,就不会收到整个数据。在您可能需要在c代码中使用一个循环来读取,直到到达tcp流的末尾。在
试试这个:
希望有帮助。在
相关问题 更多 >
编程相关推荐