我一直在尝试使用套接字逐帧传输视频,然后使用open-cv呈现视频。第一次传输帧后,代码卡住了。一旦我强制退出传输代码,就会显示第一帧。
试图添加循环和移除循环。我试图增加传输之间的延迟。
服务器代码
import socket, pickle
import os
import cv2
TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 4096
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
while 1:
data =b""
while 1:
packet = conn.recv(BUFFER_SIZE)
if not packet: break
data += packet
data_arr = pickle.loads(data)
print("data")
cv2.imshow('image',data_arr)
print("cv2")
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
conn.close()
客户代码
import socket
import pickle
import cv2
import os
import time
path = os.getcwd()
TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 4096
s.connect((TCP_IP, TCP_PORT))
image = cv2.imread(path+"//example.jpg")
data_string = pickle.dumps(arr)
while 1:
s.send(data_string)
time.sleep(1)