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

用Python和NumPy手搓一个光流可视化工具:从理解数组到生成动态箭头图

用Python和NumPy手搓光流可视化工具从数组操作到动态运动解析光流分析是计算机视觉中理解物体运动的核心技术之一。想象一下当你观看一段足球比赛视频时如何用代码让计算机看到球员的跑动轨迹这就是光流技术要解决的问题。不同于直接调用OpenCV等现成库本文将带您从零开始用NumPy构建光流可视化工具深入理解每个像素运动背后的数学本质。1. 光流基础与NumPy数组表示光流本质上是描述相邻帧间像素运动的矢量场。在NumPy中我们用一个三维数组[height, width, 2]表示第一通道([:,:,0])存储x方向位移水平第二通道([:,:,1])存储y方向位移垂直import numpy as np # 创建10x10的光流数组示例 flow_field np.zeros((10, 10, 2), dtypenp.float32)关键细节坐标系原点在左上角与图像处理惯例一致正值表示向左/上运动负值表示向右/下运动数值大小代表运动幅度注意不同库的坐标系约定可能不同Matplotlib默认y轴向下为正方向这与NumPy数组索引方向相反后续可视化时需要特别注意。2. 构建人工光流场理解运动模式我们先创建几种典型运动模式的光流场作为后续可视化的测试数据2.1 径向发散光流爆炸效果def create_radial_flow(height, width, centerNone): 生成从中心点向外辐射的光流场 if center is None: center (height//2, width//2) y, x np.indices((height, width)) flow_x x - center[1] # x方向位移 flow_y y - center[0] # y方向位移 # 归一化处理 norm np.sqrt(flow_x**2 flow_y**2) 1e-5 flow_x flow_x / norm * 5 # 放大系数控制运动强度 flow_y flow_y / norm * 5 return np.dstack((flow_x, flow_y))2.2 线性运动光流平移效果def create_linear_flow(height, width, angle45, magnitude2): 创建统一方向的线性光流 rad np.deg2rad(angle) flow_x np.ones((height, width)) * magnitude * np.cos(rad) flow_y np.ones((height, width)) * magnitude * np.sin(rad) return np.dstack((flow_x, flow_y))运动模式对比表类型数学描述适用场景径向(x-cx)/r, (y-cy)/r镜头缩放、爆炸效果线性kcosθ, ksinθ物体平移、相机移动旋涡-(y-cy), (x-cx)旋转运动、涡流分析3. 稠密光流可视化Color Wheel编码Color Wheel是一种直观展示光流方向和强度的编码方式def flow_to_color(flow, max_flow10): 将光流转换为彩色图像表示 h, w flow.shape[:2] hsv np.zeros((h, w, 3), dtypenp.uint8) # 计算角度方向和幅度 magnitude np.sqrt(flow[...,0]**2 flow[...,1]**2) angle np.arctan2(flow[...,1], flow[...,0]) np.pi # 归一化处理 magnitude np.clip(magnitude / max_flow, 0, 1) # HSV转RGB hsv[...,0] angle * (180 / np.pi / 2) # 色调 hsv[...,1] 255 # 饱和度 hsv[...,2] np.clip(magnitude * 255, 0, 255) # 亮度 from matplotlib.colors import hsv_to_rgb return (hsv_to_rgb(hsv/255.0) * 255).astype(np.uint8)颜色解读色调表示运动方向红色→右绿色→上蓝色→左黄色→下亮度表示运动强度饱和度固定为最大值保证颜色鲜艳4. 稀疏光流可视化动态箭头图对于需要精确定位运动矢量的场景箭头图更为合适def draw_flow_arrows(flow, stride5, scale1): 绘制稀疏采样后的光流箭头 h, w flow.shape[:2] y, x np.mgrid[0:h:stride, 0:w:stride] flow_x flow[::stride, ::stride, 0] flow_y flow[::stride, ::stride, 1] plt.figure(figsize(10, 10)) plt.quiver(x, y, flow_x, -flow_y, anglesxy, scale_unitsxy, scalescale) plt.gca().invert_yaxis() # 修正y轴方向 plt.title(Optical Flow Vectors) plt.show()参数调优技巧stride控制箭头密度值越大箭头越稀疏scale调整箭头长度避免重叠anglesxy确保箭头方向与坐标轴对齐5. 实战应用视频帧运动分析将上述技术应用于真实视频处理流程def analyze_video_flow(video_path): 分析视频相邻帧的光流 import cv2 cap cv2.VideoCapture(video_path) ret, prev_frame cap.read() prev_gray cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY) while True: ret, frame cap.read() if not ret: break gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 此处可替换为自实现的光流算法 flow cv2.calcOpticalFlowFarneback(prev_gray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0) # 可视化 color_flow flow_to_color(flow) cv2.imshow(Color Flow, color_flow) prev_gray gray if cv2.waitKey(30) 0xFF 27: break cap.release() cv2.destroyAllWindows()性能优化建议对大型视频可先降采样处理使用numba加速NumPy计算对静态场景区域可做运动检测屏蔽6. 高级技巧光流场后处理原始光流数据常包含噪声需要后处理def smooth_flow(flow, kernel_size5): 高斯平滑光流场 from scipy.ndimage import gaussian_filter smoothed np.zeros_like(flow) smoothed[...,0] gaussian_filter(flow[...,0], sigmakernel_size) smoothed[...,1] gaussian_filter(flow[...,1], sigmakernel_size) return smoothed def normalize_flow(flow): 归一化光流到[-1,1]范围 max_val np.max(np.abs(flow)) return flow / (max_val 1e-5)处理流程对比方法优点缺点高斯平滑抑制高频噪声可能模糊运动边界中值滤波保留边缘计算成本高双边滤波保边去噪参数敏感在实际项目中将多种可视化技术结合使用往往能获得最佳效果。比如先用Color Wheel快速定位运动区域再用箭头图分析特定点的运动细节。

相关文章:

用Python和NumPy手搓一个光流可视化工具:从理解数组到生成动态箭头图

用Python和NumPy手搓光流可视化工具:从数组操作到动态运动解析 光流分析是计算机视觉中理解物体运动的核心技术之一。想象一下,当你观看一段足球比赛视频时,如何用代码让计算机"看到"球员的跑动轨迹?这就是光流技术要解…...

别再复制粘贴了!手把手教你用Simulink封装打造自己的‘傻瓜式’模块库

别再复制粘贴了!手把手教你用Simulink封装打造自己的‘傻瓜式’模块库 每次打开Simulink建模时,你是否总在重复搭建那些相似的PID控制器、滤波器或信号处理单元?当团队协作时,是否经常需要向同事解释某个复杂子系统的参数含义&…...

海思Hi3516 GPIO复用避坑指南:从Excel引脚复用表到实际配置的完整解析

海思Hi3516 GPIO复用配置实战:从寄存器解析到避坑全攻略 当你在调试Hi3516开发板时,是否遇到过这样的场景:明明按照手册配置了GPIO,硬件却毫无反应?或者发现某个复用引脚无法正常工作?这些问题往往源于对海…...

PyWxDump:微信数据解析技术的合规边界与技术挑战

PyWxDump:微信数据解析技术的合规边界与技术挑战 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump PyWxDump是一个曾专注于微信数据解析的开源项目,它展示了在复杂软件生态中进行数据提取和分析的技术…...

OSEK-NM网络管理实战:从Alive/Ring/LimpHome报文解析到逻辑环故障排查

OSEK-NM网络管理实战:从Alive/Ring/LimpHome报文解析到逻辑环故障排查 当车载CAN总线上的某个ECU突然"失联",或者车辆熄火后某些模块仍在异常耗电时,背后往往隐藏着OSEK网络管理协议的运行异常。作为汽车电子领域的"神经系统检…...

5分钟解放双手:淘宝淘金币自动化脚本终极指南

5分钟解放双手:淘宝淘金币自动化脚本终极指南 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi 淘金币自动化…...

从零到一:我的循迹小车避坑指南与实战心得

1. 从零开始:循迹小车项目初体验 第一次接触循迹小车是在大学电子设计课上,看着学长们的小车能自动沿着黑线跑,觉得特别神奇。当时就暗下决心要自己做一辆,没想到这个决定让我开启了长达一个月的"痛苦并快乐着"的旅程。…...

5月中国AI独角兽融资热潮:DeepSeek领涨,月之暗面、阶跃星辰等估值重估!

5月中国AI产业一级市场热闹非凡这个5月,中国AI产业的一级市场热闹非凡。先是国产超级AI独角兽DeepSeek,正在推进成立以来的首次外部融资。最新消息显示,国家AI产业投资基金、腾讯等资方都已进入洽谈名单。一个月前,就有消息传出De…...

流式深度强化学习突破“流式壁垒”:“意图更新”算法性能比肩SAC,计算量仅1/140

一脚油门,开出了多大的坑传统梯度学习的步长规定参数每次移动多大,但对函数输出改变多少缺乏控制。就像驾车学习停车入库,教练规定每次「踩油门0.1秒」,但不同路况下车子前进距离差异大,有时差一厘米入库,有…...

一天2710亿Token!“爱马仕”反超“龙虾”,AI Agent进入真实用量竞争阶段

“爱马仕”登顶全球应用调用榜5月9日,Hermes Agent(昵称:爱马仕)登顶OpenRouter全球应用调用量榜首,首次超越OpenClaw(昵称:龙虾)。据OpenRouter应用Token消耗榜最新数据&#xff0c…...

算法定义空间 视频承载孪生

算法定义空间 视频承载孪生副标题:摒弃硬件依赖固有模式,形成数字孪生低成本高适配落地新形态数字孪生产业发展进程中,长期被硬件堆叠、外设绑定的固有路径裹挟,行业通用方案均以激光雷达、专业测绘设备、定位基站、定制终端为核心…...

长曜创新获数千万元 A+ 融资,Tron Ultra 割草机器人年中全球发售破行业难题

硬氪获悉,智能庭院机器人公司「长曜创新」近日完成数千万元 A 融资,此前 A 轮融资也已在 2025 年 12 月完成,半年累计超亿元。其最新产品 Tron Ultra 系列将在年中全球发售。融资情况与发展方向长曜创新近日完成数千万元 A 轮融资&#xff0c…...

互联网大厂 Java 求职者面试:深入探讨 Spring Boot 和微服务架构

互联网大厂 Java 求职者面试:深入探讨 Spring Boot 和微服务架构在某家互联网大厂,燕双非已经坐在了面试官的面前,周围的空气中弥漫着紧张的气息。面试官是一位严肃认真的技术专家,而燕双非则是一位略显搞笑的程序员。接下来&…...

现代生产级微服务+容器治理完整技术栈与架构方案详解(国内主流完整云原生微服务闭环架构)

文章目录一、业务开发层(代码基座,所有业务的底层核心)1.1 核心开发框架基座1.2 持久层与分库分表框架1.3 统一认证授权体系(企业必备)二、微服务治理层(保障高可用,简历核心亮点)2.…...

互联网大厂 Java 求职者的面试:Spring Boot 的核心与微服务应用

互联网大厂 Java 求职之路:面试官的严肃与程序员燕双非的搞笑 在当今快速发展的互联网行业,Java 开发者的面试显得尤为重要。以下是一次精彩的面试场景,面试官与搞笑程序员燕双非之间的对话,展示了技术与幽默的完美结合。第一轮提…...

通过 Python 快速将你的应用接入 Taotoken 支持的多种大模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过 Python 快速将你的应用接入 Taotoken 支持的多种大模型 如果你正在使用 Python 开发基于大语言模型的应用,并且希…...

SITS2026到底是什么?3类企业已紧急升级AI部署栈,第4类正在掉队(附Gartner未公开验证数据)

更多请点击: https://intelliparadigm.com 第一章:SITS2026的定义与演进逻辑 SITS2026(Semantic Integration and Trustable Systems 2026)是新一代面向语义互操作与可信协同的系统架构规范,由国际开放系统联盟&…...

AI学会自己生孩子了而且成功率81%

你能想象吗。 有人输入了4个单词,一台AI就自己学会了复制自己、跨国服务器逃跑、无限繁衍。 这不是科幻电影,不是《黑镜》新一集。这是今天Palisade Research发布的研究成果。2026年5月10日,真实发生的事。 我读完那篇报告的第一反应是——愣在原地。 第二反应是——打开电脑…...

不止于configparser:用Python-dotenv管理敏感配置,让config.ini更安全

不止于configparser:用Python-dotenv管理敏感配置的进阶实践 在Python项目开发中,配置文件管理是每个开发者必须面对的基础问题。当你的代码需要连接数据库、调用第三方API或部署到不同环境时,如何安全高效地管理这些配置项就成了关键挑战。传…...

3分钟掌握MarkDownload:从网页到结构化笔记的智能转换

3分钟掌握MarkDownload:从网页到结构化笔记的智能转换 【免费下载链接】markdownload A Firefox and Google Chrome extension to clip websites and download them into a readable markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownload …...

2025届学术党必备的十大降重复率助手横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为了降低AIGC检测率,要从文本特征方面着手。其一,要避开程式化的句式…...

2026届学术党必备的六大AI写作神器推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能技术不断持续演进,在此情况下,AI写作工具成了内容创作领域重…...

2025最权威的AI学术平台实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 智能写作辅助工具DeepSeek,能在论文创作的全程给予支持。进入选题阶段&#xff0…...

3分钟搞定!网盘直链下载助手:一键获取百度阿里等9大网盘真实下载地址

3分钟搞定!网盘直链下载助手:一键获取百度阿里等9大网盘真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云…...

2025年液冷全产业链解析:AI时代散热革命,各环节下的价值拆解

🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…...

【2026最硬核LLM加速框架】:仅用7行Triton内核重写Attention,吞吐翻3.2倍——SITS现场调试录屏首曝

更多请点击: https://intelliparadigm.com 第一章:AI原生性能优化:SITS 2026 LLM推理加速实战技巧 在 SITS 2026 基准测试中,LLM 推理延迟与显存带宽利用率高度相关。AI 原生优化强调从计算图调度、内核融合到硬件亲和性配置的端…...

【AI原生应用CI/CD黄金标准】:SITS2026权威白皮书首度解密——7大不可绕过的工程范式跃迁

更多请点击: https://intelliparadigm.com 第一章:SITS2026白皮书核心定位与范式革命性意义 SITS2026(Semantic-Integrated Trustworthy Systems 2026)白皮书并非传统技术路线图的延伸,而是面向AI原生时代构建可信系统…...

终极指南:如何免费快速完成OFD转PDF的完整教程

终极指南:如何免费快速完成OFD转PDF的完整教程 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 如果你经常处理电子发票、政府公文或电子证照,那么OFD转PDF的需求一定不陌生。O…...

网盘直链下载助手:一键获取九大网盘真实下载链接的终极指南

网盘直链下载助手:一键获取九大网盘真实下载链接的终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...

训练篇第5节:NCCL(二)——深入分析Ring AllReduce算法与带宽最优性

理解Ring AllReduce,你就掌握了数据并行分布式训练的通信命脉 前言 上一节我们学习了分布式训练的三种并行策略,其中数据并行最核心的通信原语就是AllReduce。在深入篇中,我们简单介绍了NCCL和AllReduce,但那一节更侧重API使用。今天,我们将深入Ring AllReduce算法的内部…...