要实现将树莓派的摄像头信息实时发送到PC端显示,可以使用Python的socket库。以下是一个简单的示例:
服务器端(树莓派):
- 安装必要的库:
pip install opencv-python
CopyCopy
- 创建一个名为 server.py 的文件,并添加以下代码:
import cv2
import socket
初始化摄像头
cap = cv2.VideoCapture(0)
创建socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('', 8080))
server_socket.listen(5)
print("服务器已启动,等待客户端连接...")
while True:
# 接收客户端连接
client_socket, client_address = server_socket.accept()
print(f"客户端 {client_address} 已连接")
while True:
# 读取摄像头画面
ret, frame = cap.read()
# 将画面转换为字节流
data = cv2.imencode('.jpg', frame)[1].tobytes()
# 发送画面给客户端
client_socket.sendall(data)
# 接收客户端确认信息
acknowledgment = client_socket.recv(1024)
if not acknowledgment:
break
# 关闭连接
client_socket.close()
print(f"客户端 {client_address} 已断开")
释放摄像头资源
cap.release()
server_socket.close()
CopyCopy
- 运行服务器端代码:
python server.py
CopyCopy
客户端(PC端):
- 安装必要的库:
pip install opencv-python
CopyCopy
- 创建一个名为 client.py 的文件,并添加以下代码:
import cv2
import socket
创建socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.100', 8080))
print("已连接到服务器")
while True:
# 接收服务器发送的画面
data = client_socket.recv(1024)
if not data:
break
# 解码画面
frame = cv2.imdecode(data, cv2.IMREAD_COLOR)
# 显示画面
cv2.imshow('frame', frame)
# 按键控制是否继续接收画面
if cv2.waitKey(1) == ord('q'):
break
关闭所有窗口
cv2.destroyAllWindows()
关闭socket连接
client_socket.close()
CopyCopy
- 运行客户端代码:
python client.py
CopyCopy
注意:请将server.py中的server_socket.bind(('', 8080))中的IP地址更改为树莓派实际的IP地址。如果不知道树莓派的IP地址,可以使用ifconfig命令查看。
这样,树莓派的摄像头信息就可以实时发送到PC端显示了。