Я пытаюсь отправить видеокадр в режиме реального времени, который ловлю своей камерой, на сервер и обработать их. Я использую OpenCV для обработки изображений и Python для языка. Вот мой код
client_cv.py
import cv2
import numpy as np
import socket
import sys
import pickle
cap=cv2.VideoCapture(0)
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientsocket.connect(('localhost',8089))
while True:
ret,frame=cap.read()
print sys.getsizeof(frame)
print frame
clientsocket.send(pickle.dumps(frame))
server_cv.py
import socket
import sys
import cv2
import pickle
import numpy as np
HOST=''
PORT=8089
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print 'Socket created'
s.bind((HOST,PORT))
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'
conn,addr=s.accept()
while True:
data=conn.recv(80)
print sys.getsizeof(data)
frame=pickle.loads(data)
print frame
cv2.imshow('frame',frame)
Этот код дает мне ошибку конца файла, что логично, потому что данные всегда продолжают поступать на сервер и Pickle не знает, когда закончить. Мой поиск в интернете заставил меня использовать рассол, но пока он не работает.
Примечание: я установил conn.recv
80, потому что это число, которое я получаю, когда говорю print sys.getsizeof(frame)
.