【发布时间】:2021-05-10 14:34:09
【问题描述】:
所以这里的问题。我正在尝试通过套接字发送大量二进制图像代码,这是 OpenCV 图像的腌制数据。我正在调整图像大小,然后将其从服务器发送到客户端。
当我将图像大小调整为(160,120) 时,我没有收到错误消息,但是当我将调整大小设置为(640,480) 时收到错误消息。我需要解决这个错误。请帮忙。
我的服务器.py
import socket, cv2, pickle, struct
# Socket Create
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print('HOST IP:', host_ip)
port = 9999
socket_address = (host_ip, port)
# Socket Bind
server_socket.bind(socket_address)
# Socket Listen
server_socket.listen(5)
print("LISTENING AT:", socket_address)
Header_length = 20
# Socket Accept
while True:
client_socket, addr = server_socket.accept()
print('GOT CONNECTION FROM:', addr)
if client_socket:
vid = cv2.VideoCapture(0)
while (vid.isOpened()):
img, frame = vid.read()
resized_frame = cv2.resize(frame , (640,480))
a = pickle.dumps(resized_frame)
message = f"{len(a):<{Header_length}}".encode('utf-8') + a
client_socket.sendall(message)
cv2.imshow('TRANSMITTING VIDEO', frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
client_socket.close()
我的客户.py
import socket, cv2, pickle, struct
# create socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name) # paste your server ip address here
port = 9999
client_socket.connect((host_ip, port)) # a tuple
data = b""
payload_size = struct.calcsize("Q")
while True:
recieved_data = client_socket.recv(20).decode('utf-8')
if not recieved_data:
continue
frame_data = client_socket.recv(int(recieved_data))
frame = pickle.loads(frame_data)
cv2.imshow("RECEIVING VIDEO", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
client_socket.close()
如果您想了解更多信息,请告诉引理。
【问题讨论】:
-
错误是什么?
标签: python opencv sockets pickle