python udp视频服务端客户端

发布于:2025-07-25 ⋅ 阅读:(20) ⋅ 点赞:(0)

import cv2
import socket
import threading
from PIL import ImageFont, ImageDraw, Image
import numpy as np

ca=cv2.VideoCapture(0)


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

text = "Hello!"
position = (50, 50)
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
color = (0, 255, 0)  # 绿色
thickness = 2


def fun():
    global text
    while(1):
        text=input("请输入想发送的内容:")
    
def recv():
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
    s.bind(("0.0.0.0",8000))
    while(1):
        data=s.recvfrom(65536)
        #print(data[1])
        if len(data)>0:
            zip_data=np.frombuffer(data[0],dtype=np.uint8)
            cur_data=cv2.imdecode(zip_data,cv2.IMREAD_COLOR)
            cv2.imshow("1111",cur_data)
            cv2.waitKey(1)


t2=threading.Thread(target=recv)
t2.start()
print("视频服务端已准备好!")
# 视频写入配置
#fourcc = cv2.VideoWriter_fourcc(*'XVID')
#out = cv2.VideoWriter('output_chinese.avi', fourcc, 20.0, (640, 480))

# 加载中文字体(Windows 示例)
font_path = "simhei.ttf"  # 你可以换成系统其他中文字体
font = ImageFont.truetype(font_path, 32)

ip=input("输入对方ip地址:")

print("准备发送")
t=threading.Thread(target=fun)
t.start()
while(1):
    ret, frame = ca.read()
    if not ret:
        break
        # 转换为 PIL 图像对象
    img_pil = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
    draw = ImageDraw.Draw(img_pil)

    # 写入中文文本
    draw.text((50, 50), text, font=font, fill=(255, 0, 0))

    # 转回 OpenCV 格式
    frame = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)

    # 显示窗口
    #cv2.imshow('Video with Chinese', frame)

    # 写入视频文件
    #out.write(frame)
    zip_data=cv2.imencode('.jpg', frame, [int(cv2.IMWRITE_JPEG_QUALITY), 80])[1]
    buffer_data=zip_data.tobytes()
    jj=s.sendto(zip_data,(ip,8000))
    print(jj)
    if cv2.waitKey(1) & 0xFF == 27:  # ESC键退出
        break
    cv2.waitKey(1)
 


网站公告

今日签到

点亮在社区的每一天
去签到