【问题标题】:OPENCV Send Frames over TCP Python, Pickle Could not find markOPENCV 通过 TCP Python 发送帧,Pickle 找不到标记
【发布时间】:2018-06-02 10:54:23
【问题描述】:

我正在尝试使用 python 通过 tcp 套接字从 opencv 发送和接收帧。 我使用 sys.getsizeof() 函数计算出 connection.recv(bytes) 的大小,以查看发送结束字节的大小,然后在服务器代码中使用它。 运行此代码时,我收到一些帧 5 到 10,然后我在服务器端收到错误:

_pickle.UnpicklingError: could not find MARK

并且客户端代码冻结并且什么都不做。

服务器代码:-

#server
import threading
import cv2
import socket
import time
import pickle
import sys
import numpy as np
class Receive(threading.Thread):
    def __init__(self,RX_PORT):
        threading.Thread.__init__(self)
        self.daemon = True
        self.rx_port = RX_PORT
        self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        self.s.bind(('',self.rx_port))
    def run(self):
        self.s.listen(1)
        self.c, self.addr = self.s.accept()
        print('[+] Incoming Connection From '+str(self.addr))
        while True:
            self.data = self.c.recv(921781)
            self.frame = pickle.loads(self.data)
            cv2.imshow('RECV',self.frame)
    def __del__(self):
        self.s.close()
        cv2.destroyAllWindows()
        self.is_alive = False

RX = Receive(5550)
RX.start()
time.sleep(60)

客户端代码:-

#client code
import numpy as np
import cv2
import socket
import pickle
import sys

cap = cv2.VideoCapture(0)

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1',5550))

while(True):
    ret, frame = cap.read()
    data = pickle.dumps(frame)
    s.sendall(data)
    print(sys.getsizeof(data))
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

【问题讨论】:

    标签: python sockets opencv pickle


    【解决方案1】:

    不知道,我也在想办法通过 Kafka 发送泡菜数据。

    也许这可能是您的解决方案:

    ret, frame = cap.read()
    ret, jpeg = cv2.imencode('.jpeg', frame)   #Encode the frame into JPEG
    data = pickle.dumps(jpeg)
    s.sendall(data)
    

    【讨论】:

      【解决方案2】:

      好的。我解决了。 也许是 socket.recv(size) 的问题

      答案在此处的代码中:https://github.com/HarshVaragiya/Chat-Application/tree/master/VideoChat

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-08
        • 2015-06-03
        • 2013-07-21
        • 1970-01-01
        • 1970-01-01
        • 2016-04-11
        • 1970-01-01
        • 2018-06-28
        相关资源
        最近更新 更多