您的位置:首页 > 科技 > 能源 > 【SuperMap iDesktopX 2024视频分析】

【SuperMap iDesktopX 2024视频分析】

2025/4/12 22:55:56 来源:https://blog.csdn.net/supermapsupport/article/details/141814685  浏览:    关键词:【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();

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com