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)