当前位置: 首页 > news >正文

python共享内存实际案例,传输opencv frame

主进程程序

send.py

import cv2
import numpy as np
from multiprocessing import shared_memory, resource_trackercap = cv2.VideoCapture(0)
if not cap.isOpened():print("无法打开 RTSP 流,请检查地址、网络连接或 GStreamer 配置。")
else:# 创建共享内存shm_name = 'shared_frame'frame_shape = (360, 640, 3)  # 假设视频帧的大小为 480x640shm = shared_memory.SharedMemory(create=True, size=np.prod(frame_shape) * np.dtype(np.uint8).itemsize, name=shm_name)frame_buffer = np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf)try:while True:ret, frame = cap.read()if ret:# 将frame写入共享内存frame = cv2.resize(frame, (640, 360))np.copyto(frame_buffer, frame)cv2.namedWindow("RTSP Stream", cv2.WINDOW_NORMAL)cv2.imshow("RTSP Stream", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:print("无法读取视频帧")breakfinally:cap.release()cv2.destroyAllWindows()shm.close()shm.unlink()

receive.py

import cv2
import numpy as np
from multiprocessing import shared_memory, resource_tracker# 共享内存的名称
shm_name = 'shared_frame'
frame_shape = (360, 640, 3)  # 假设视频帧的大小为 480x640# 连接到共享内存
shm = shared_memory.SharedMemory(name=shm_name)
# 注销资源跟踪器,避免receive异常终止,关闭共享内存
resource_tracker.unregister(shm._name, 'shared_memory')
frame_buffer = np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf)try:while True:# 从共享内存中读取frameframe = np.copy(frame_buffer)cv2.namedWindow("Shared Memory Frame", cv2.WINDOW_NORMAL)cv2.imshow("Shared Memory Frame", frame)if cv2.waitKey(1) & 0xFF == ord('q'):break
finally:cv2.destroyAllWindows()shm.close()

终端1启动

send.py

终端2启动 receive.py

ps:使用共享内存的方式,可以实现容器内和容器外程序的通讯,且延迟极低。通过该方式可以实现容器内做推理,容器外做GUI显示

相关文章:

  • 中国古代史6
  • 【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑
  • GNSS数据自动化下载系统的设计与实现
  • 互信息与KL散度:差异与应用全解析
  • Linux系统:文件系统前言,详解CHSLBA地址
  • 自适应稀疏核卷积网络:一种高效灵活的图像处理方案
  • iOS - 如何从appStore获取app版本信息
  • 电能质量扰动信号信号通过hilbert变换得到瞬时频率
  • 第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房
  • 如何优化MCU中断响应时间
  • 【AI面试秘籍】| 第7期:多轮对话如何实现长期记忆?高频考点解析+代码实战
  • 使用腾讯会议远程控制电脑进行操作电脑
  • C语言中的assert
  • 一种基于光源评估并加权平均的自动白平衡方法(二)
  • OpenCV中的光流估计方法详解
  • Kaamel隐私合规洞察:Facebook美容定向广告事件分析
  • 不用联网不用编程,PLC通过智能网关快速实现HTTP协议JSON格式与MES等系统平台双向数据通讯
  • 使用WebStorm打断点调试Vue项目
  • 2025-05-13 学习记录--Python-数据类型转换 + 运算符
  • 乙酰基六肽-39/Silusyne 新型减肥活性肽,减少脂肪堆积
  • 财政部党组召开2025年巡视工作会议暨第一轮巡视动员部署会
  • 美国和沙特签署上千亿美元军售协议
  • “75万买299元路由器”事件进展:重庆市纪委等三部门联合介入调查
  • 左娅︱悼陈昊
  • 乘客被地铁厕所门砸伤,南京地铁:突然坏的,已和乘客沟通处理
  • 涨知识|没想到吧,体育老师强调的运动恢复方法是错的?