网站做多个镜像,龙口网站制作,重庆建设工程质量监督检测中心有限公司,网站建设网络推广书生代码#xff1a;
https://github.com/xingxinghuo1000/meteor_monitor_scripts.git 由于代码做了较大调整#xff0c;废弃了sikuli部分。本篇文章为旧的#xff0c;不要看了#xff0c;最新文章请看#xff1a;
用python自行开发的流星监控系统meteor_monitor#xff0…代码
https://github.com/xingxinghuo1000/meteor_monitor_scripts.git 由于代码做了较大调整废弃了sikuli部分。本篇文章为旧的不要看了最新文章请看
用python自行开发的流星监控系统meteor_monitor第二篇-CSDN博客 背景 著名的流星监控软件ufocapturehd2有几个缺陷不能忍
1、吃性能我的工控电脑2.4GHz的4核心CPU发现流星后录制出来的视频会严重丢帧
2、收费。还相当的贵。大概700多元 用破解版当然也可以这里不推荐 调研过程 1、解决如何录制的问题
我发现win10自身的相机app可以以非常低的cpu消耗录制720p50fps的视频非常流畅。如果能够写个脚本。离线分析录制出来的mp4文件把录制和分析解耦就整体搞定了性能的问题。
调研过其他几个软件都不如win10自带的app好用 2、如何自动化录制视频并分段
视频必须得分段如果不分段录制一个晚上一个视频文件40GB中途如果不小心断电了整个晚上录制的文件就变得不可读这是不能接受的
曾经尝试过使用pywinauto库做自动化发现相机这个app没有具体按钮的句柄spyxx工具无法探查出来。
那就上万能工具sikuliX吧这个工具是使用模式识别方式点击按钮不论这个按钮在屏幕哪里只要匹配到了就能点。 参考资料 sikulix自动化测试 - 简书 3、如何存储视频
首先为了节省cpu消耗必须保存到本地硬盘中。但工控的本地硬盘一般不会很大
所以视频可以通过一个脚本定时同步到nfs上或者samba服务中
这样就解决了性能和容量的两难问题
同步脚本和录制时间需要一个标记来表示为视频录制已完成这里采用了大数据里常用的.done文件。每一个mp4文件都对应一个.done文件没有.done文件就代表没有录制完 4、离线分析
由于视频存储在了nas中可能是nfs或者samba。分析端可以是多机共同参与的即分布式分析。这样可以提升分析的效率尽早拿到结果
需要对视频做一个文件锁的功能防止多机冲突。
每一个mp4。都对应一个.lock文件如果发现了.lock文件锁则看看里面的内容是不是自己锁定的如果是就处理如果是其他机器锁定的则跳过这个文件 分析思路使用帧差法通过pythonopencv来实现这个算法不算难
参考资料pythonopencv实现移动侦测帧差法 - 杰晶网络,每天都更新的互联网资源网 更新日期2022/6/15 part1-视频自动录制部分 先上代码
具体代码如下 https://github.com/xingxinghuo1000/meteor_monitor_scripts/tree/master/sikuli_open_camera.sikuli 如何使用
1、把相机的应用固定到任务栏必须的否则sikuli没法启动相机
2、安装JDK下载sikuliX的jar包放在D盘根目录
3、仅支持windows双击start_camera_record_by_sikuli.bat文件即可运行 开发过程和踩坑记录 1、先做最小的Demo实现点击录制按钮和停止录制的按钮
2、再做基本的控制比如启动相机app关闭相机app。 启动相机无法通过cmd命令启动python中是 os.popen方式执行cmd必须通过点击任务栏按钮才行。不知道为什么如果有大神知道可以告知
3、判断何时开始录制何时停止录制这需要获取当地的日出和日落时间我写了一个比较简单的实现直接写死在代码里如果您有需要可以修改代码修改为您当地的时间然后再运行
4、稳定性对于停止按钮和录制按钮的判断sikulix支持设置阈值调整了一下才准确搞定。按照默认的参数会有误判非常坑人
5、调整参数比如视频分段的时间间隔多久停止一下再重新录制。我设置的是200多秒。不要太长免得保存视频时造成卡顿 效果
进程常驻内存定时判断时间是否该录制视频。每隔一段时间自动停止录制再开始录制 part2-视频定时同步功能 脚本代码https://github.com/xingxinghuo1000/meteor_monitor_scripts/tree/master/video_sync 执行过程
1、扫描目标目录视频是否已超过100GB如果超过则删除老的文件
2、轮训查看源视频目录找出所有mp4文件
3、检查mp4文件是否有对应的.done文件
4、如果有则复制到目标目录复制完在目标目录写入.done文件同时删除源目录的视频文件
5、不断循环 注意
为了防止网络问题对于传输了一半的文件删掉重新同步
如果出了网络问题程序会进入exception逻辑sleep一段时间后重试 会不会出现传输了一半的文件被下游处理呢
答不会没有.done文件下游是不会处理这个视频文件的 后续可以扩展的地方
1、目标路径可以是一个ftp地址
不过这次没有支持这个功能没太大必要。大多数windows都支持samba服务直接挂载到本地作为本地路径使用即可 part3-离线分析脚本 代码meteor_monitor_scripts/detect_meteor at master · xingxinghuo1000/meteor_monitor_scripts · GitHub