我想要客户-服务器的投屏代码
时间: 2023-05-25 09:05:51 浏览: 66
以下是一个简单的客户端-服务器投屏代码:
服务器端代码:
```python
import socket
import cv2
HOST = '' # 服务器的IP地址
PORT = 8000 # 端口号
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
print('等待客户端连接...')
conn, addr = s.accept()
print('连接成功:', addr)
cap = cv2.VideoCapture(0) # 打开默认的摄像头
while True:
ret, frame = cap.read() # 读取每一帧
if not ret: # 如果视频读取完毕,退出循环
break
else:
data = frame.tostring() # 将帧转换为字符串
conn.send(data) # 发送数据
cap.release() # 释放摄像头
conn.close() # 关闭连接
```
客户端代码:
```python
import socket
import cv2
import numpy as np
import threading
HOST = '' # 服务器的IP地址
PORT = 8000 # 端口号
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
def receive_frame():
global frame
while True:
data = b''
while len(data) < 691200: # 每一帧图像的大小为 640x480x3=691200
packet = s.recv(691200 - len(data))
if not packet:
break
data += packet
if not data:
break
frame = np.frombuffer(data, dtype=np.uint8)
frame = frame.reshape((480, 640, 3))
cv2.imshow('screen', frame)
if cv2.waitKey(1) == ord('q'): # 按下 'q' 键退出
break
s.close()
thread = threading.Thread(target=receive_frame)
thread.start()
while True:
pass
thread.join()
cv2.destroyAllWindows()
```
这个代码使用 OpenCV 捕捉本地摄像头的视频,并将每一帧图像转换为字符串发送到客户端。客户端接收到字符串后,将其转换为图像并使用 OpenCV 显示。注意,服务器和客户端代码中的 IP 地址、端口号需要根据实际情况进行调整。