-
因图像分析需要,相机设置是2560×1440分辨率,H.265编码。设备是华为昇腾Atlas系列,系统Ubuntu 20.04,Python 3.8,OpenCV 4.5。用下面的代码读取时会出现花屏、掉帧,而且内存占用特别大。我试过把相机采集和图像分析分成两个线程,也试过用华为VDEC做硬件解码,但VDEC的API一堆问题,有些函数根本找不到,改来改去也没解决根本问题。不知道有没有人处理过类似的问题?该怎么稳定地读取这种高分辨率H.265的RTSP流?或者有没有别的方法建议? import cv2import threadingimport queuefrom pupil_apriltags import Detectorimport mathfrom datetime import datetimeimport timeimport tracebackimport os #---------- 摄像头采集线程类 ----------class CameraCaptureThread(threading.Thread): """ 摄像头采集线程类 用法: capture_thread = CameraCaptureThread() capture_thread.daemon = True capture_thread.start() """ def __init__(self, camera_id): """ 初始化摄像头采集线程 Args: camera_id (int): 摄像头ID,默认0 """ super().__init__() self.camera_id = camera_id # 摄像头ID self.cap = None # 摄像头对象 self.frame_queue = queue.Queue(maxsize=2) # 帧队列最大长度设为2,避免旧帧堆积,保证实时性 self.running = False # 线程运行状态标志 def run(self): """ 线程入口函数 打开摄像头并循环读取帧,将帧放入队列 """ # 打开摄像头 self.cap = cv2.VideoCapture(self.camera_id, cv2.CAP_FFMPEG) # 设置 FFmpeg 内部缓冲只保留最新一帧 self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 2) # MJPG 编码 #self.cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G')) # 如果打开失败,则退出线程 if not self.cap.isOpened(): print("无法打开摄像头") return self.running = True while self.running: # -----1.读取一帧图像----- ret, frame = self.cap.read() if not ret: print("无法读取帧,尝试重连...") self.cap.release() time.sleep(1) self.cap = cv2.VideoCapture(self.camera_id, cv2.CAP_FFMPEG) continue # 帧队列满时,丢弃最早的帧,保证实时性 if self.frame_queue.full(): _ = self.frame_queue.get() # 弹出最早帧 self.frame_queue.put(frame) # 放入最新帧 del ret, frame # 释放内存 def stop(self): """ 停止线程 """ self.running = False if self.cap: self.cap.release() if __name__ == '__main__': # 摄像头地址 camera_id = "rtsp://xx" capture_thread = None try: # 启动采集线程 capture_thread = CameraCaptureThread(camera_id=camera_id) capture_thread.daemon = True capture_thread.start() time.sleep(2) # 从队列里取一帧并保存 if not capture_thread.frame_queue.empty(): frame = capture_thread.frame_queue.get() # 获取当前日期时间 current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 在图片右上角添加日期时间文字 cv2.putText(frame, current_time, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2) # 保存图片 filename = "security_camera.jpg" cv2.imwrite(filename, frame) print(f"已保存图片: {filename}") else: print("没有获取到帧") except Exception as e: traceback.print_exc() finally: # 确保释放资源 if capture_thread: capture_thread.stop() capture_thread.join() time.sleep(0.2) cv2.destroyAllWindows() print("摄像头线程已关闭")
-
完整的程序 和硬件部署能做的可以留言联系一下 功能:https://bbs.huaweicloud.com/blogs/420738
-
尊敬的华为云客户:我们很高兴的通知您,经过半年多的公测,为了给您提供更专业的服务支持和可用性保障,华为云视频内容分析服务子服务视频OCR计划于2019/06/05 00:00:00(北京时间)正式转商用。为了感谢您对华为云视频OCR服务的支持,服务将在转商后一周内保持免费,2019/06/12 00:00:00后正式开始收费。当前已使用该服务的用户,转商后不会影响您的继续使用;为了保障您的权益,在此郑重建议您继续使用服务前,点击视频内容分析服务主页的服务咨询,联系我们了解具体的收费标准。更多关于视频OCR的产品介绍,请您点击了解。如您有任何问题,可随时通过工单或者服务热线(950808)与我们联系。感谢您对华为云的支持!
-
尊敬的华为云客户:华为云计划于2019/03/01 00:00(北京时间)将暴力分拣识别正式转商用。服务正式商用后,服务将于2019/03/01 00:00(北京时间)正式开始收费。华为云在此提醒您,如果您不再需要使用该服务,请勿从控制台使用服务或调用服务API,以免产生费用。更多关于暴力分拣识别的产品介绍,请您点击了解。如您在使用过程中有宝贵意见,欢迎您拨打华为云服务热线:4000-955-988与我们联系。感谢您对华为云的支持!
-
视频点播发布日志管理服务【新功能】:基于HLS标准加密协议(AES128算法)对HLS文件的TS分片进行加密,客户端通过解密秘钥进行播放。详细的操作与描述:视频加密是对视频内容保护的一种手段。华为云支持对视频中的内容进行HLS AES128加密,有效防止视频泄露和盗链问题。操作步骤1.登录视频点播控制台。2.在左侧导航栏选择“全局设置 > 安全设置”,单击“加密设置”,弹出“加密设置”界面,如图1所示。图1 加密设置页面 3.配置合法的能够提供秘钥的URL,单击“确认”。如需要对上传转码后的视频进行加密,还需在转码模板开启“加密”开关,详情可参考转码设置。
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签