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

【SuperMap iDesktopX 2024视频分析】

文章目录

  • 前言
  • 一、视频分析环境配置
    • 1.AI环境配置
    • 2.开发环境配置
  • 二、视频分析扩展代码
    • 1.加载视频分析环境
    • 2.目标检测
    • 3.地理围栏分析
    • 4.获取视频分析结果


前言

  SuperMap iDesktopX 2024基于AI与AR技术,提供的视频分析功能,使得我们具备更强的视频感知能力,因而从视频中提取更为丰富的信息。视频分析模块提供了目标检测、车牌识别、围栏分析、轨迹提取,以及AR空间分析功能,包括缓冲区分析、空间查询、空气质量分析等,可将视频与GIS结合,在视频地图中提取更多的空间信息,并基于视频进行空间分析。以下是相关环境配置以及目标检测、地理围栏的示例代码。


一、视频分析环境配置

1.AI环境配置

  在使用视频分析功能之前,需要先下载 SuperMap iDesktopX 的AI扩展包,并进行相关的环境配置,配置好环境后即可激活视频分析中的功能。具体环境配置可以参考:https://help.supermap.com/iDesktopX/zh/SpecialFeatures/ARMap/ARAnalysis/AREnvironmentConfiguration.html

2.开发环境配置

  在iDea"Project Structure - Project Setting - Libraries"中引入以下依赖:
●%iDesktopX产品包%/bin/
●%iDesktopX产品包%/bundles/idesktop_bundles/
●%iDesktopX产品包%/bundles/require_bundles/
●%iDesktopX产品包%/lib/

二、视频分析扩展代码

1.加载视频分析环境

代码如下:

//加载OpenCV,用来解析视频LoadDllManager.loadDlls();//加载Python环境PythonUtilities.setPythonExecutor(new PythonDefaultExecutor());GlobalParameters.setHighPerformanceDetection(true);GlobalParameters.setSupportStartPythonProcess(false);VideoAnalystRegister.getInstance().register();//加载视频分析环境VideoPlayerPython videoPlayerPython = new VideoPlayerPython();videoPlayerPython.getVideoAnalystEnvironment();//打开空间化后的视频数据集Workspace workspace = new Workspace();String udbxPath = "F:\\Temp\\Video9SingleDatasetMultiVideo.udbx";DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo();datasourceConnectionInfo.setServer(udbxPath);datasourceConnectionInfo.setEngineType(EngineType.UDBX);datasourceConnectionInfo.setAlias(FileUtilities.getFileNameWithoutExtension(udbxPath));Datasource datasource = workspace.getDatasources().open(datasourceConnectionInfo);DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("video9_1Video");//遍历视频数据集并提交为视频分析任务Recordset recordset = datasetVector.getRecordset(false,CursorType.STATIC);while (!recordset.isEOF()){VideoManager videoManager = new VideoManager(recordset);videoManager.build();recordset.moveNext();VideoAnalystExecuteEngine.getInstance().addVideoTask(new VideoTask(videoManager));}RecordsetUtilities.releaseRecordset(recordset);

2.目标检测

代码如下:

/** 目标检测代码* *///开启目标检测videoPlayerPython.getVideoAnalystEnvironment().startAnalyst(VideoAnalystFunctionKey.OBJECTION_DETECTION);VideoAnalystObjectDetection videoAnalystObjectDetection = (VideoAnalystObjectDetection) videoPlayerPython.getVideoAnalystEnvironment().getVideoAnalyst(VideoAnalystFunctionKey.OBJECTION_DETECTION);//设置房屋模型AnalystModel analystModel = AnalystModelManager.getInstance().getAnalystModel("TieTaFangWu");videoAnalystObjectDetection.getVideoAnalystParameter().setAnalystModel(analystModel);videoAnalystObjectDetection.getVideoAnalystParameter().getSupportObjectDetection().clear();//设置目标检测类型和结果绘制风格for (DetectionType detectionType : analystModel.getDetectionTypes()){videoAnalystObjectDetection.getVideoAnalystParameter().getSupportObjectDetection().put(detectionType.getStrType(), VideoAnalystUtilities.getObjectDetectionStyleByBackgroundColor(Color.GREEN));}

3.地理围栏分析

代码如下:

/** 地理围栏分析代码* *///开启围栏分析videoPlayerPython.getVideoAnalystEnvironment().startAnalyst(VideoAnalystFunctionKey.VIOLATION);//获取围栏分析实例VideoAnalystViolation videoAnalystViolation = (VideoAnalystViolation) videoPlayerPython.getVideoAnalystEnvironment().getVideoAnalyst(VideoAnalystFunctionKey.VIOLATION);VideoAnalystViolationParameter videoAnalystViolationParameter = videoAnalystViolation.getVideoAnalystParameter();//设置取证存过滤错误结果videoAnalystViolationParameter.setViolationIntersectAreaRatio(0.5);videoAnalystViolationParameter.setViolationOutputFolderPath("F:\\SuperMap\\result");videoAnalystViolationParameter.setOutputImageTimeInterval(1);//设置围栏分析规则DatasetVector selectedDataset = (DatasetVector) datasource.getDatasets().get("GengDi");videoAnalystViolationParameter.setViolationDatasetVector(selectedDataset);Geometry geometryByViolationExpression = VideoAnalystUtilities.getGeometryByViolationExpression(selectedDataset,"SmID>0");SpacialAnalystData spacialAnalystData = new SpacialAnalystData("耕地违建","SmID>0",geometryByViolationExpression,true);spacialAnalystData.setViolationJudgmentRule(ViolationJudgmentRule.INCLUDED);videoAnalystViolationParameter.getViolationData().add(spacialAnalystData);

4.获取视频分析结果

代码如下:

/** 获取视频分析结果* *///添加获取视频分析结果事件videoPlayerPython.getVideoAnalystEnvironment().addVideoAnalystResultChangedListener(new VideoAnalystResultChangedListener() {@Overridepublic void videoAnalystResultChanged(VideoAnalystResultChangedEvent videoAnalystResultChangedEvent) {//获取视频分析结果ArrayList<VideoAnalystResult> currentVideoAnalystResults = videoPlayerPython.getVideoAnalystEnvironment().getCurrentVideoAnalystResults();for (VideoAnalystResult currentVideoAnalystResult:currentVideoAnalystResults) {pushVideoAnalyst(currentVideoAnalystResult);}}});//执行分析任务VideoAnalystExecuteEngine.getInstance().addVideoPlayerPython(videoPlayerPython);VideoAnalystExecuteEngine.getInstance().run();

http://www.mrgr.cn/news/17723.html

相关文章:

  • java操作日期时间类
  • 从零开始写游戏之斗地主-数据结构
  • 【Canvas与数学】N边形中的N边形
  • 探索Java中的分布式任务调度:从理论到实践
  • 第三方检验检测实验室管理如何实现
  • mysql入门
  • 【数据结构】二叉树的链式结构,二叉树的遍历,求节点个数以及高度
  • Visual Studio 卸载和移除项目的区别
  • 深度学习100问47:什么是RNN的正则化,为什么说RNN的正则化很重要
  • 【验证码逆向专栏】某某滑块逆向分析
  • pyqt6常规布局问题!具体请看如下:
  • 课程37:Docker持久化部署(数据库、日志、配置文件)
  • ARP协议(原理,特点,报文格式,具体过程),ARP缓存(有效时间,为什么),ARP欺骗(定向断网,成为中间人),RARP简单介绍
  • 为Jekyll站添加“相关文章“功能
  • HTML+CSS面试题总结:(第三天)
  • JS设计模式之“语言之魂” - 原型模式
  • 读《Visual Whole-Body for Loco-Manipulation》②论文
  • C#-__DynamicallyInvokable
  • 5.图论.题目3
  • 互联网摸鱼日报(2024-09-02)