Atlas 200I DK A2视频保存

news2024/11/24 5:36:48

Atlas 200I DK A2开发者套件内置案例第一个目标检测,视频保存下来无法打开,修改为cv2保存可正常在本地展示。

原代码部分

def infer_video(video_path, model, labels_dict, cfg, output_path='output.mp4'):
    """视频推理"""
    image_widget = widgets.Image(format='jpeg', width=800, height=600)
    display(image_widget)

    # 读入视频
    cap = vreader(video_path)
    video_writer = None
    for img_frame in cap:
        # 对视频帧进行推理
        image_pred = infer_frame_with_vis(img_frame, model, labels_dict, cfg, bgr2rgb=False)
        image_widget.value = img2bytes(image_pred[:, :, ::-1])

        if video_writer is None:
            # 初始化视频写入对象
            video_writer = FFmpegWriter(output_path)
        # 将每一帧的预测结果写入视频对象
        video_writer.writeFrame(image_pred)
    video_writer.close()

视频打不开

 

修改后(参考:Pyhon cv2.VideoWriter 保存视频_cv2保存视频_南洲.的博客-CSDN博客)

def infer_video(video_path, model, labels_dict, cfg, output_path='output.mp4'):
    """视频推理"""
    # 读入视频
    cap = cv2.VideoCapture(video_path)
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = cap.get(cv2.CAP_PROP_FPS)
    fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
    outVideo = cv2.VideoWriter('save_test_video.avi', fourcc, fps, (width,height))
    
    image_widget = widgets.Image(format='jpeg', width=800, height=600)
    display(image_widget)
    
    while True:
        # 对视频帧进行推理
        ret, frame = cap.read()
        if not ret:
            print("... end of video file reached")
            break
        image_pred = infer_frame_with_vis(frame, model, labels_dict, cfg, bgr2rgb=False)
        image_widget.value = img2bytes(image_pred)
        outVideo.write(image_pred)

保存为avi格式,也能在jupyter中正常展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5解析 | 第四篇:common.py文件详解

前言 文件位置:**./models/commonpy** 该文件是实现YOLO算法中各个模块的地方,如果我们需要修改某一模块(例如C3),那么就需要修改这个文件中对应模块的的定义。这里我先围绕代码,带大家过一遍各个模块的定义,详细介绍我将在后续的教案中逐步展开。由于YOLOv5版本问题,同…

SpringBoot 如何处理 CORS 跨域?

Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点 跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器…

SpringMVC 中的数据绑定如何使用 @InitBinder 注解

SpringMVC 是一款基于 Java 的 Web 开发框架,它提供了许多方便开发的功能,其中包括数据绑定。在 SpringMVC 中,数据绑定的工作是由 DataBinder 类完成的。DataBinder 可以将 HTTP 请求中的数据绑定到 Java 对象中,并且还可以将 Ja…

《安富莱嵌入式周报》第316期:垂直降落火箭模型,超低噪声测量,开源电流探头,吸尘器BLDC,绕过TrustZone,提高频率计精度,CMSIS V6.0文档

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1rz4y1H71w/ 《安富莱嵌入式周报》第316期:垂直降落…

实验室服务器 环境配置记录

前言 本篇文章为本人自己(Toniht)在实验室服务器上配置环境的一些记录,我也是个半吊子,很多步骤都不知其所以然,主打一个能用就行。主要目的是方便后续遇见问题及时定位,或者后续再次需要时不用上网到处查找。次要目的是希望能帮…

从0到1学习Yalmip工具箱(1)-入门学习

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:YALMIP 1.Yalmip工具箱的下载与安装 1.1下载 Yalmip的作者是Johan Lfberg,是由Matlab平台编程实现的一个免费开源数学优化工具箱,在官网上就可以下载。官方下载…

8-1-1、kuberbetes学习-service、deployment、ReplicaSet、pod

Kubernetes资源对象Pod、ReplicaSet、Deployment、Service之间的关系_CodingSoldier的博客-CSDN博客 Pod、ReplicaSet、Deployment、Service之间的关系如下图: deployment根据pod的标签关联到pod,是为了管理pod的生命…

Unity 事件函数的执行顺序

脚本生命周期流程图 Awake:在所有 Start 函数之前,以及 prefab 实例化之后调用。(如果一个 GameObject 在启动期间处于非活动状态,则在激活之前不会调用它。)OnEnable(仅在对象处于活动状态时调用&#xff…

为你揭开ai绘画女生软件的神秘面纱

黄琳:嘿,我最近听说了一种叫做ai绘画的东西,你知道它是什么吗? 罗娜:听说这是一种通过人工智能技术来生成艺术作品的过程和方法。 黄琳:哦,那它生成的效果如何呢?有什么软件可以实…

2023IKCEST “一带一路” 国际大数据竞赛重磅启动!

2023IKCEST第五届“一带一路”国际大数据竞赛暨第九届百度&西安交大大数据竞赛,由联合国教科文组织国际工程科技知识中心(IKCEST)、中国工程科技知识中心(CKCEST)、百度及西安交通大学共同主办,旨在放眼…

LINUX安装nginx详细步骤,部署web前端项目

1. 安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2. 下载并解压安装包 可以去https://nginx.org/download里面找最新的包,nginx-1.25.1.tar.gz及以后的,里面资源比较多,耐心寻…

飞行动力学 - 第7节-起飞性能 之 基础点摘要

飞行动力学 - 第7节-起飞性能 之 基础点摘要 1. 气动特性2. 起飞性能3. 性能指标3.1 地面滑跑阶段3.2 起飞滑跑距离估算 4. 跑道4.1 编号4.2 等级 5. 参考资料 1. 气动特性 起飞不仅需要考虑升力,还需要在有限跑道长度上加速,因此襟翼放出的角度不能太大…

Claude 2正式上线;Prompt在手,天下我有

🦉 AI新闻 🚀 Claude 2正式上线,AI能力全面提升 摘要:Claude 2正式上线!作为ChatGPT的强力挑战者,Claude 2的到来绝对是一个重磅事件。Claude 2性能更强,响应更快,并正式推出了网页…

MPI转以太网模块西门子200以太网通讯设置

你有没有想过,微生物发酵行业的生产控制可以如此先进?今天我们要介绍的是一项关于MPI转以太网模块在发酵集散控制系统中的应用。 这个系统由上位机和下位机组成,可以实现工程师站和操作员站之间的无缝连接,同时还可以实现远程工作…

微信小程序之网络数据请求 wx:request的简单使用

网络数据请求 1. 网络数据请求 wx:request2. 请求格式3. 关闭request的合法检验 1. 网络数据请求 wx:request 出于安全性方面的考虑,小程序官方对数据接口的请求做出了两个限制:只能请求 HTTPS 类型的接口必须将接口的域名添加到信任列表中. 在自己的微…

数智化转型下,财务共享各类RPA建设如何避坑?

企业数智化转型时代的热词——RPA是业务流程优化的利器之一。但对于部分非IT人士对RPA在企业管理领域的运用优势及实施注意点还不太了解,今天与大家快速科普一下。 RPA全称为Robotic Process Automation, 即机器人流程自动化,是一种能够在计算机/手机等…

【C++】 Qt-线程挂起、恢复和退出

文章目录 线程挂起和恢复内核对象线程退出 线程挂起和恢复 我们给设置线程的函数创建一个线程句柄用来接收返回值,并且将状态改为挂起状态 然后在循环中当第五秒时恢复线程,第八秒时连续挂起两次线程,并且返回输出挂起计数器的值&#xff08…

【C++ OJ练习】7.字符串相加

1.题目链接 力扣 2.解题思路 拿到每个字符后 减去字符0 转化成对应的数字 再相加即可 倒着加 因为有进位的情况 最后头插或 者尾插加逆置 3.代码 class Solution { public:string addStrings(string num1, string num2) {//倒着往回加int end1 num1.size() - 1;int end2…

走进Vue2飞入Vue3

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 前端相关 ✨特色专栏&…

C语言中的宏

宏定义又称为宏替换,简称“宏”,在C语言预处理阶段被处理,编译器会根据宏定义进行文本替换。这样做的好处有许多,它可以为程序员在编程时提供方便,并能在一定程度上提高程序的运行效率。 本文将通过一部分场景&#xf…