树莓派的摄像头信息实时发送到PC端显示

简介: 树莓派的摄像头信息实时发送到PC端显示

要实现将树莓派的摄像头信息实时发送到PC端显示,可以使用Python的socket库。以下是一个简单的示例:
服务器端(树莓派):

  1. 安装必要的库:

pip install opencv-python
CopyCopy

  1. 创建一个名为 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

  1. 运行服务器端代码:

python server.py
CopyCopy

客户端(PC端):

  1. 安装必要的库:

pip install opencv-python
CopyCopy

  1. 创建一个名为 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

  1. 运行客户端代码:

python client.py
CopyCopy

注意:请将server.py中的server_socket.bind(('', 8080))中的IP地址更改为树莓派实际的IP地址。如果不知道树莓派的IP地址,可以使用ifconfig命令查看。
这样,树莓派的摄像头信息就可以实时发送到PC端显示了。

目录
相关文章
|
Ubuntu
【报错】解决Ubuntu环境下VsCode无法输入中文
【报错】解决Ubuntu环境下VsCode无法输入中文
1461 0
数字频带传输——二进制数字调制及MATLAB仿真
数字频带传输——二进制数字调制及MATLAB仿真
1499 1
|
网络协议 Python
python中socket模块的导入和使用基础
【4月更文挑战第3天】Python的`socket`模块是网络编程的基础,用于创建套接字、绑定地址和端口、监听连接及数据传输。首先,使用`import socket`导入模块。接着,通过`socket.socket()`创建套接字,指定地址族(如`AF_INET`)和类型(如`SOCK_STREAM`)。然后,使用`bind()`方法绑定地址和端口,`listen()`方法监听连接。服务器端通过`accept()`接受连接,`recv()`接收数据,`send()`发送响应。客户端则用`connect()`连接服务器,`send()`发送数据,`recv()`接收响应。
|
网络安全 网络架构 数据安全/隐私保护
树莓派通过网线连接电脑(校园网也能连接),实现SSH连接
树莓派通过网线连接电脑(校园网也能连接),实现SSH连接
|
12月前
|
人工智能 数据可视化 架构师
低代码平台的前世今生:AI 时代的新起点!
本文探讨了软件开发生产力的三次飞跃及其对企业和开发者的深远影响。从90年代RAD带来的可视化革命,到低代码平台推动全民开发,再到生成式AI实现智能建造,每次技术变革都显著提升了开发效率。文章分析了低代码与AI的融合趋势,提出通过分层设计、扩展机制和安全治理实现两者协同,并展望了未来无人化开发的可能性。最终强调,企业和开发者应拥抱低代码与AI的结合,找到适合自身的数字化转型路径。
|
机器学习/深度学习 数据采集 人工智能
MATLAB在机器学习模型训练与性能优化中的应用探讨
本文介绍了如何使用MATLAB进行机器学习模型的训练与优化。MATLAB作为强大的科学计算工具,提供了丰富的函数库和工具箱,简化了数据预处理、模型选择、训练及评估的过程。文章详细讲解了从数据准备到模型优化的各个步骤,并通过代码实例展示了SVM等模型的应用。此外,还探讨了超参数调优、特征选择、模型集成等优化方法,以及深度学习与传统机器学习的结合。最后,介绍了模型部署和并行计算技巧,帮助用户高效构建和优化机器学习模型。
MATLAB在机器学习模型训练与性能优化中的应用探讨
|
消息中间件 XML 前端开发
springBoot集成websocket实时消息推送
本文介绍了如何在Spring Boot项目中集成WebSocket实现实时消息推送。首先,通过引入`spring-boot-starter-websocket`依赖,配置`WebSocketConfig`类来启用WebSocket支持。接着,创建`WebSocketTest`服务器类,处理连接、消息收发及错误等事件,并使用`ConcurrentHashMap`管理用户连接。最后,前端通过JavaScript建立WebSocket连接,监听消息并进行相应处理。此方案适用于需要实时通信的应用场景,如聊天室、通知系统等。
2558 2
|
前端开发 网络协议 JavaScript
如何在前端实现WebSocket发送和接收TCP消息(多线程模式)
请确保在你的服务器端实现WebSocket的处理,以便它可以接受和响应前端发送的消息。同时,考虑处理错误情况和关闭连接的情况以提高可靠性。
1498 0