cv2 视频UDP传输

#server

import socket

import pickle

import cv2

import sounddevice as sd

import struct

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)

s.bind(("127.0.0.1",3000))

#s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 65565)

all_data=b''

while(1):

data,addr=s.recvfrom(1024)

all_data=data

data_size=struct.unpack('!L',data[0:4])[0]

print(data_size)

while(len(all_data)<data_size+4):

data,addr=s.recvfrom(1024)

all_data+=data

print(len(all_data))

frame=pickle.loads(all_data[4:])

frame=cv2.imdecode(frame, 1)

cv2.imshow("cesgi",frame)

print("接收完毕")

if cv2.waitKey(1) & 0xFF == ord('q'):

break

all_data=b''

#client

import socket

import cv2

import pickle

import sounddevice as sd

import struct

cap = cv2.VideoCapture(0)

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)

s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)

while(1):

#my_recording = sd.rec(int(4410), samplerate=44100, channels=1)

ret, frame = cap.read()

_, send_data = cv2.imencode('.jpg', frame, [cv2.IMWRITE_JPEG_QUALITY, 50])

data=pickle.dumps(send_data)

data_size=struct.pack('!L',len(data))

all_data=data_size+data

data_list=[all_data[i:i+1024] for i in range(0,len(all_data),1024)]

#audio=pickle.dumps(my_recording)

if ret:

for i in data_list:

s.sendto(i,("127.0.0.1",3000))

#s.sendto(audio,("127.0.0.1",3000))

if cv2.waitKey(1) & 0xFF == ord('q'):

break

相关推荐
{{uname}}1 小时前
利用WebSocket实现实时通知
网络·spring boot·websocket·网络协议
2501_915909063 小时前
iOS App 安全性探索:源码保护、混淆方案与逆向防护日常
websocket·网络协议·tcp/ip·http·网络安全·https·udp
白熊1884 小时前
【计算机视觉】OpenCV实战项目:基于Tesseract与OpenCV的字符识别系统深度解析
人工智能·opencv·计算机视觉
O。o.尊都假都5 小时前
socket套接字的超时控制
单片机·嵌入式硬件·网络协议
Ronin-Lotus5 小时前
图像处理篇---MJPEG视频流处理
图像处理·python·opencv
六bring个六6 小时前
qtcreater配置opencv
c++·qt·opencv·计算机视觉·图形渲染·opengl
多巴胺与内啡肽.7 小时前
OpenCV进阶操作:光流估计
人工智能·opencv·计算机视觉
christine-rr7 小时前
【25软考网工】第六章(4)VPN虚拟专用网 L2TP、PPTP、PPP认证方式;IPSec、GRE
运维·网络·网络协议·网络工程师·ip·软考·考试
小白自救计划7 小时前
网络协议分析 实验四 ICMPv4与ICMPv6
网络·网络协议
purrrew7 小时前
【Java ee初阶】网络编程 UDP socket
java·网络·网络协议·udp·java-ee