VM模块开发 C++ 工程配置
介绍VM的开发模式:
VM 开发模式分为 VM SDK 开发、算子 SDK 开发、算子模块开发。
三者的架构关系如下:
由上图可知,VM SDK 开发依赖于 VM,算子模块开发给 VM 补充算法模块,算子 SDK 开发则
依赖于算子安装包。由于 VM 安装包含算子安装包,因此统一建议安装 VM。
聊完三者的架构关系,下面介绍 VM 应用及开发模式的适用场景。
1. VM 应用
简单应用场景,VM 能够实现业务逻辑,无定制界面需求,无外围(数据库、图表统计)功能需求。
该模式无需任何开发,轻松上手,调参方便。
2. VM SDK 开发(亦称 VM 二次开发)
用户希望部分业务逻辑由自己实现(例如定位计算等),有定制界面和外围功能需求,或希望把 VM
嵌入客户开发的软件中。该开发模式代码量少、开发周期较短,且 VM 提供各类流程与参数编辑控件,
能够满足绝大多数应用需求,是最为推荐的开发模式。
3. 算子 SDK 开发
用户希望全部业务逻辑由自己实现,该开发模式代码量大、开发周期长,海康只提供算子库和少
量界面控件,能够满足部分应用需求。
4. 算子模块开发(只支持 C++)
用户希望将自己开发的算子封装成模块并能在 VM 中使用(例如拖拽、订阅等),补充项目所需的
算子功能。该模式需要开发者有一定的算法开发经验和编程功底。
C++ 工程环境配置:
平台工具集: Visual Stdio 2013(v120) # 2013就是120
VS2013打开
实际不需要 手工配置
选择 x64 Release 就可以成功编译
且编译好自动复制到模块路径
所以必须安装VS2013 且最好使用VS2013 打开
配置过程:
手工配置
项目>>属性(配置属性):
C/C++:
常规:
平台工具集: Visual Stdio 2013(v120) # 2013就是120
附加包含目录:
..\common\src;..\common;..\common\VM400\include\VmModuleFrame;..\common\SDK\Includes\Algorithms;..\common\SDK\Includes\Common\VisionDesigner;%(AdditionalIncludeDirectories)
..\common\src
..\common
..\common\VM400\include\VmModuleFrame
..\common\SDK\Includes\Algorithms
..\common\SDK\Includes\Common\VisionDesigner
VC++目录:
包含目录: 空
库目录: 空
链接器:
常规:
"附加库目录":
{
..\common\include\lib;..\common\VM400\lib;..\common\SDK\Libraries\x64\Algorithms;..\common\SDK\Libraries\x64\Common;%(AdditionalLibraryDirectories)
..\common\include\lib
..\common\VM400\lib
..\common\SDK\Libraries\x64\Algorithms
..\common\SDK\Libraries\x64\Common
}
输入:
"附加依赖项":
{
ModuleFrame.lib
MVDShapeCpp.lib
MVDImageCpp.lib
MVDPositionFixCpp.lib
MVDPreproMaskCpp.lib
HSlog.lib
}
"模块定义文件":
{
AlgorithmModule.def
}
结束:
接下来说一下Opencv && Halcon配置方法:
项目>>属性(配置属性):
VC++目录:
"包含目录":
{
opencv4.9\include
opencv4.9\include\opencv2
HALCON-23.05-Progress\include
HALCON-23.05-Progress\include\halconcpp
}
"库目录":
{
opencv4.9\x64\vc16\lib
HALCON-23.05-Progress\lib\x64-win64
}
链接器:
常规:
"附加库目录":
{
HALCON-23.05-Progress\lib\x64-win64
}
输入:
"附加依赖项":
{
halconcpp.lib
opencv_world490.lib
}
总结:
项目>>属性(配置属性):
VC++目录:
"包含目录":(1)
"库目录":(2)
链接器:
常规:
"附加库目录":(3)
输入:
"附加依赖项":(4)
程序前面加:
和 附加依赖项 都行
没搞明白有啥不一样;
两个都搞上也行;
#pragma comment(lib, "opencv_world490.lib")
#pragma comment(lib, "opencv_world490d.lib")
#pragma comment(lib, "halconcpp.lib")
结束;;;; 注意 C# 可以 VS2013以及以上都可以 打开 ; C++ 必须安装VS2013