jetson nano实时视频流传输到Windows

该代码示例展示了如何利用Python和ZeroMQ库在两个程序之间实时传输摄像头视频流。发送端捕获摄像头帧,将其编码为JPEG,然后通过ZeroMQPUB/SUB模型进行发布。接收端订阅这些帧,解码并显示在窗口中,整个过程在同一局域网内几乎无延迟。
摘要由CSDN通过智能技术生成

视频发送端

# 视频发送端
import cv2
import zmq
import base64

# 初始化 ZeroMQ
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5555")

# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    # 读取摄像头帧
    ret, frame = cap.read()
    if not ret:
        break

    # 将帧转换为 JPEG 格式
    _, buffer = cv2.imencode('.jpg', frame)
    encoded_image = base64.b64encode(buffer)

    # 发布帧数据
    socket.send(encoded_image)

    # 在窗口中显示帧
    cv2.imshow("Camera", frame)

    # 按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

视频接受端

# 视频接收端
import cv2
import zmq
import base64
import numpy as np

# 初始化 ZeroMQ
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://192.168.137.251:5555")
socket.subscribe("")

# 创建窗口
cv2.namedWindow("Receiver")

while True:
    # 接收帧数据
    encoded_image = socket.recv()

    # 解码图像数据
    buffer = base64.b64decode(encoded_image)
    np_array = np.frombuffer(buffer, dtype=np.uint8)
    frame = cv2.imdecode(np_array, cv2.IMREAD_COLOR)

    # 在窗口中显示帧
    cv2.imshow("Receiver", frame)

    # 按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cv2.destroyAllWindows()

ifconfig

同一局域网

几乎看不到延迟

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值