【光电智造】干货|Opencv库处理视频文件,并对照片进行三维建模

今日光电 2024-10-16 18:03

 今日光电 

     有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。追光逐电,光赢未来...欢迎来到今日光电!




----追光逐电 光赢未来----

前言

本次实验是实现的是根据无pos文件的视频文件建立3d纹理模型,在传统的摄影测量软件中(如Pix 4D),对于一般的视频文件无法进行3dmaps处理,存在两方面的问题:

(1) 相机文件缺失,无法进行缺失内外定向元素;

(2)地理定位文件缺失,无法进行处理;

图1:pix4D处理普通视频文件截图

一、Opencv库

OpenCV是一个功能强大的开源计算机视觉库,它支持多种编程语言和操作系统,提供了超过2500个优化算法,用于图像处理、视频分析、物体检测和机器学习等领域。由于其高性能和实时处理能力,OpenCV被广泛应用于面部识别、自动驾驶、机器人视觉、视频监控、医疗图像分析和增强现实等场景。开发者可以通过访问OpenCV的官方网站下载库文件,并利用其丰富的文档和社区资源进行学习和开发。Python用户可以通过pip轻松安装OpenCV的Python接口。

表1:cv库安装

二、读取视频文件

下述代码定义了一个名为 extract_frames 的函数,它的作用是从指定的视频文件中提取帧,并将这些帧作为图片保存到指定的输出文件夹中。函数接受三个参数:video_path 是视频文件的路径,output_folder 是保存提取帧的图片的文件夹路径,max_frames 是要提取的最大帧数,默认值为100。

以下是代码的详细解释:

1. 使用 cv2.VideoCapture 打开视频文件,参数是视频文件的路径。

2. 检查视频文件是否成功打开,如果没有成功打开,则打印错误信息并返回。

3. 如果输出文件夹不存在,则使用 os.makedirs 创建该文件夹。

4. 初始化 frame_count 计数器,用于跟踪提取的帧数。

5. 使用 while True 循环逐帧读取视频,直到读取到视频的末尾或达到最大帧数限制。

6. 使用 video_capture.read() 读取每一帧,如果读取失败,则打印错误信息并退出循环。

7. 使用 cv2.flip 函数将帧垂直翻转(参数180表示垂直翻转)。

8. 构建每一帧的输出文件路径,使用 os.path.join 将输出文件夹和帧编号组合成完整的文件路径。

9. 使用 cv2.imwrite 将帧保存为PNG格式的图片到输出文件夹中。

10. 打印保存的帧信息。

11. 增加 frame_count 计数器,如果达到最大帧数限制,则退出循环。

12. 使用 video_capture.release() 释放视频捕捉对象。

13. 打印完成提取帧的信息。

14. 如果在执行过程中发生异常,打印异常信息。

使用示例部分展示了如何调用 extract_frames 函数,指定了视频文件路径 video_path、输出文件夹路径 output_folder 和最大帧数 max_frames(在这个例子中限制为50帧)。

import cv2import osdef extract_frames(video_path, output_folder, max_frames=100):    try:    # 打开视频文件        video_capture = cv2.VideoCapture(video_path)        # 检查视频是否成功打开        if not video_capture.isOpened():            print(f"Error opening video file: {video_path}")            return        # 确保输出文件夹存在,如果不存在则创建        if not os.path.exists(output_folder):            os.makedirs(output_folder)        frame_count = 0        while True:            print(f"Reading frame: {frame_count}")  # 打印当前帧编号            # 逐帧读取视频            ret, frame = video_capture.read()            # 如果读取失败,退出循环            if not ret:                print(f"Failed to read frame at frame_count: {frame_count}")                break            # 翻转图像(垂直翻转)            frame = cv2.flip(frame, 180)            # 构建帧的输出文件路径            frame_filename = os.path.join(output_folder, f"frame_{frame_count:04d}.png")            # 保存帧为图片            cv2.imwrite(frame_filename, frame)            # 打印保存信息            print(f"Saved: {frame_filename}")            frame_count += 1            if frame_count >= max_frames:                break                 # 释放视频捕捉对象        video_capture.release()        print("Finished extracting frames.")    except Exception as e:        print(f"An error occurred: {e}")# 使用示例video_path = "C:/Use/Desktop/shi/veconomy.mp4"  # 输入视频文件路径output_folder = "C:/Use /Desktop/folder"# 输出图片保存文件夹extract_frames(video_path, output_folder, max_frames=50)  # 限制读取的帧数




提取结果展示:

图2:提取结果

三、构建模型

本次处理数据的环境为3DF Zephyr Aerial 。3DF Zephyr Aerial是一款由 3Dflow 开发的专业三维建模软件,专门用于从航拍照片生成三维模型。这款软件提供了一系列的工具,专门为日常地理测量和分析、无人机/UAV 制图、建筑等领域设计。可以有效的处理无定位信息的图像。具体步骤如下所示:

(1)新建项目;在3DF Zephyr Aerial运行环境中(下同),选择菜单栏中的【工作流程】→选择【新建项目】。

图3:新建项目

(2)加载数据,设置工作格式。在【处理选项】界面,勾选【创建项目后处理三维模型】和【在线检测预处理的照片校准】。

图4:加载数据

(3)添加照片数据;在【选择照片页面】中,加载上述文件夹中每一帧的图像。

图5:添加照片

(4)相片校准;在【相机校准】页面,选择自动校正照片。

图6:相机校准

(5)设置点云重建格式;选择默认格式。

图7:相机定向和点云设置

(6)运行过程;这里可以把多余的点和面全部删掉;

图8:运行过程

(7)结果图;

(a)稀疏点云

图9:结果图

小结

通过上述过程处理,可以通过普通的视频文件生成点云数据,但对于动态物体控制点的捕捉仍然存在困难,三维纹理数据仍需要在blender软件中优化渲染。

图10:静态建筑三维纹理效果

来源:数字地形分析


申明:感谢原创作者的辛勤付出。本号转载的文章均会在文中注明,若遇到版权问题请联系我们处理。


 

----与智者为伍 为创新赋能----


【说明】欢迎企业和个人洽谈合作,投稿发文。欢迎联系我们
诚招运营合伙人 ,对新媒体感兴趣,对光电产业和行业感兴趣。非常有意者通过以下方式联我们!条件待遇面谈
投稿丨合作丨咨询

联系邮箱:uestcwxd@126.com

QQ:493826566




评论
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 857浏览
  • 前篇文章中『服务器散热效能不佳有解吗?』提到气冷式的服务器其散热效能对于系统稳定度是非常重要的关键因素,同时也说明了百佳泰对于散热效能能提供的协助与服务。本篇将为您延伸说明我们如何进行评估,同时也会举例在测试过程中发现的问题及改善后的数据。AI服务器的散热架构三大重点:GPU导风罩:尝试不同的GPU导风罩架构,用以集中服务器进风量,加强对GPU的降温效果。GPU托盘:改动GPU托盘架构,验证出风面积大小对GPU散热的影想程度。CPU导风罩:尝试封闭CPU导风罩间隙,集中风流,验证CPU降温效果。
    百佳泰测试实验室 2025-01-24 16:58 79浏览
  • 不让汽车专美于前,近年来哈雷(Harley-Davidson)和本田(Honda)等大型重型机车大厂的旗下车款皆已陆续配备车载娱乐系统与语音助理,在路上也有越来越多的普通机车车主开始使用安全帽麦克风,在骑车时透过蓝牙连线执行语音搜寻地点导航、音乐播放控制或免持拨打接听电话等各种「机车语音助理」功能。客户背景与面临的挑战以本次分享的客户个案为例,该客户是一个跨国车用语音软件供货商,过往是与车厂合作开发前装车机为主,且有着多年的「汽车语音助理」产品经验。由于客户这次是首度跨足「机车语音助理」产品,因
    百佳泰测试实验室 2025-01-24 17:00 107浏览
  • 项目展示①正面、反面②左侧、右侧项目源码:https://mbb.eet-china.com/download/316656.html前言为什么想到要做这个小玩意呢,作为一个死宅,懒得看手机,但又想要抬头就能看见时间和天气信息,于是就做个这么个小东西,放在示波器上面正好(示波器外壳有个小槽,刚好可以卡住)功能主要有,获取国家气象局的天气信息,还有实时的温湿度,主控采用ESP32,所以后续还可以开放更多奇奇怪怪的功能,比如油价信息、股票信息之类的,反正能联网可操作性就大多了原理图、PCB、面板设计
    小恶魔owo 2025-01-25 22:09 240浏览
  • 书接上回:【2022年终总结】阳光总在风雨后,启航2023-面包板社区  https://mbb.eet-china.com/blog/468701-438244.html 总结2019,松山湖有个欧洲小镇-面包板社区  https://mbb.eet-china.com/blog/468701-413397.html        2025年该是总结下2024年的喜怒哀乐,有个好的开始,才能更好的面对2025年即将
    liweicheng 2025-01-24 23:18 170浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 1068浏览
  • 随着AI大模型训练和推理对计算能力的需求呈指数级增长,AI数据中心的网络带宽需求大幅提升,推动了高速光模块的发展。光模块作为数据中心和高性能计算系统中的关键器件,主要用于提供高速和大容量的数据传输服务。 光模块提升带宽的方法有两种:1)提高每个通道的比特速率,如直接提升波特率,或者保持波特率不变,使用复杂的调制解调方式(如PAM4);2)增加通道数,如提升并行光纤数量,或采用波分复用(CWDM、LWDM)。按照传输模式,光模块可分为并行和波分两种类型,其中并行方案主要应用在中短距传输场景中成本
    hycsystembella 2025-01-25 17:24 165浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 199浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 193浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 242浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 181浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 333浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦