import socket
import struct
import numpy as np
import cv2
bufSize = 1024
client = None
HOST = "127.0.0.1"
PORT = 9999
img = None
cv2.namedWindow("Main")
def run():
global client, img
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
length = client.recv(4)
le = struct.unpack(">I", length)[0]
imb = b''
while le > bufSize:
t = client.recv(bufSize)
imb += t
le -= len(t)
while le > 0:
t = client.recv(le)
imb += t
le -= len(t)
data = np.frombuffer(imb, dtype=np.uint8)
img = cv2.imencode(data, cv2.IMREAD_COLOR)
while True:
cv2.imshow("Main", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
length = client.recv(4)
le = struct.unpack(">I", length)[0]
imb = b''
while le > bufSize:
t = client.recv(bufSize)
imb += t
le -= len(t)
while le > 0:
t = client.recv(le)
imb += t
le -= len(t)
data = np.frombuffer(imb, dtype=np.uint8)
ims = cv2.imencode(data, cv2.IMREAD_COLOR)
img = img + ims
cv2.waitKey(90)
run()type 'numpy.ndarray' to 'str' for 'ext'
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注- 将
cv2.imencode(data, cv2.IMREAD_COLOR)修改为cv2.imdecode(data, cv2.IMREAD_COLOR),以便正确解码图像数据。 - 将
ims = cv2.imencode(data, cv2.IMREAD_COLOR)修改为ims = cv2.imdecode(data, cv2.IMREAD_COLOR),以便正确解码接收到的图像数据。
修改后的代码如下所示:
import socket import struct import numpy as np import cv2 bufSize = 1024 client = None HOST = "127.0.0.1" PORT = 9999 img = None cv2.namedWindow("Main") def run(): global client, img client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((HOST, PORT)) length = client.recv(4) le = struct.unpack(">I", length)[0] imb = b'' while le > bufSize: t = client.recv(bufSize) imb += t le -= len(t) while le > 0: t = client.recv(le) imb += t le -= len(t) data = np.frombuffer(imb, dtype=np.uint8) img = cv2.imdecode(data, cv2.IMREAD_COLOR) while True: cv2.imshow("Main", cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) length = client.recv(4) le = struct.unpack(">I", length)[0] imb = b'' while le > bufSize: t = client.recv(bufSize) imb += t le -= len(t) while le > 0: t = client.recv(le) imb += t le -= len(t) data = np.frombuffer(imb, dtype=np.uint8) ims = cv2.imdecode(data, cv2.IMREAD_COLOR) img = img + ims cv2.waitKey(90) run()解决 无用评论 打赏 举报- 将