配置要求
LPV 可运行在 Windows 7 SP1 以上版本的 32 位或 64 位 Windows 操作系统。更多细节,请查阅 平台支持和最低配置要求 。
安装
使用安装包
下载 lpv_x.x.x.x_installer.exe 安装包。按照安装包步骤选择合适的文件夹安装 LPV 模块。安装包将自动执行解压 LPV 各模块、安装运行时库、注册 LPV 模块等动作。
使用压缩包
下载并解压 lpv_sdk_x.x.x.x.zip 文件到任意目录。然后手动注册 LPV 模块。
如果未安装 Visual C++ Redistributable Package 14 或以上版本,需从微软官方网站下载安装,也可以从我们提供的下载链接下载。
手动注册
- 右键 LPV 目录下的 bin 文件夹中的 reg_run_as_admin.bat 文件,选择以管理员运行,在所有平台(x64和x86)下注册所有授权的 LPV 模块。
- 双击运行 check_lpv_module_path.bat 文件,可查看已注册的 LPV 模块路径。
授权
正式版:使用加密狗进行授权
- 若使用深思加密狗,请下载并安装深思驱动,可从 官网 或我们提供的 链接 下载。
- 插入 LPV 加密狗,检查加密狗是否亮灯并常亮。
- 打开 lpvAssistant 应用程序,可从安装目录或开始菜单的快捷方式打开。
- 在 Dongles 分组下,切换到 View Licenses 界面,检查各个模块的授权状态。
试用版:使用 License 文件进行授权
该授权方式仅提供短期试用,试用期到期后将提示过期,届时请联系我们或者您的 LPV SDK 技术支持获取更多帮助。
- 打开 lpvAssistant 应用程序,可从安装目录或开始菜单的快捷方式打开。
- 在 Licenses Files 分组下,切换到 Activate Licenses 界面,然后点击 Generate Key File 按钮。助手程序将在您选择的文件夹下生成 lpv.key 文件。
- 将生成的 lpv.key 文件发给我们或者您的 LPV SDK 技术支持,我们将为您的机器进行授权,并发回 .lic 授权文件。
- 点击同界面的 Activate 按钮,选择正确的授权文件。
- 助手程序将验证该授权文件,若验证通过,将显示 "Successfully licensed!" 弹窗告知。
- 您可以在 Licenses Files 分组的 View Licenses 界面,检查各个模块的授权状态。
旧的方式
- 运行 LPV bin 目录下的 lpvKeyTool.exe ,生成 lpv.key 文件。
- 将生成的 lpv.key 文件发给我们或者您的 LPV SDK 技术支持,我们将为您的机器进行授权,并发回 .lic 授权文件。
- 您可按照以下任一方式部署授权文件:
- 将授权文件放在安装后的 bin 文件夹下。
- 将授权文件放在用户的 %AppData%/LPV/ 文件夹下。
- 打开任意一个 demo 程序,弹出未授权提示,选择 RETRY 并选择上传授权文件,我们将自动复制该文件到可授权的目录。
集成和调用
在 Windows 平台,LPV 提供 C++/COM/C# 调用接口。
集成 LPV
C++
在 C++ 代码文件中添加 #include "LPVXXX.h"
引用所需的 LPV 模块,然后通过静态的LClass::Create()
函数创建 @projectnam 算法类实例。以下代码给出一个简答的示例:
#include "LPVCore.h";
#include "LPVGeom.h";
#include "LPVPat.h";
ILMatchPtr lmatch = LMatch::Create();
lmatch->MaxCount = 1;
lmatch->AngleTolerance = 180;
LPVErrorCode errCode = lmatch->Match(sourceImg, roi, out matchResults);
if (errCode != LPVErrorCode::LPVNoError) {}
LPV 基础模块,提供图像、检测区域、绘制等基础功能。
Definition: LPVCore.idl:427
LPVErrorCode
LPV 算法或函数运行过程中遇到的错误。
Definition: LPVCore.idl:530
LPV 几何库,提供几何形状相关的数据定义、计算和测量功能。
Definition: LPVGeom.idl:80
LPV 模板匹配模块,用于提供模板匹配功能。
Definition: LPVPat.idl:80
C#
在 C# 代码文件中添加 using LPVXXXLib;
引用所需的 LPV 模块,然后通过 new LClass()
形式创建 @projectnam 算法类实例。以下代码给出一个简答的示例:
LMatch m_lmatch = new LMatch();
m_lmatch.MaxCount = 1;
m_lmatch.AngleTolerance = 180;
LPVErrorCode errCode = m_lmatch.Match(m_source_img, (LRegion)m_roi, out m_match_results);
COM
我们推荐使用基于 编译器 COM 支持 的方式,将 LPV 模块编译转换为 C++ 头文件并调用。
- 在程序开始处调用 CoInitializeEx,结束处调用 CoUnitialize。如果你希望在子线程中创建和保管 LPV 实例,那么就需要在线程开始和结束时也调用这两个函数。需要在使用 LPV 模块前调用初始化。
以 MFC 程序为例,推荐的调用位置为 MFC 程序的 InitInstance 和 ExitInstance 方法中,如: BOOL CMFCApp::InitInstance()
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CWinApp::InitInstance();
}
INT CMFCApp::ExitInstance()
{
CoUninitialize();
return CWinApp::ExitInstance();
}
对于 QT 程序,若使用 QApplication 或 QGuiApplication 可省略 CoInitializeEx 的调用,因为它们会在其构造函数中以 STA 初始化 COM。但若使用 QCoreApplication,则仍需调用 CoInitializeEx。
- 使用 #import 指令 导入 LPV 类型库,包括 LPVCoreLib(必须)、LPVGeomLib(必须)及其他希望加入的 LPVXXXLib 算法库。
以 LPVCore 模块为例,在代码中添加以下导入命令:
#define LPV_COM
#include "LPVCore.h"
或者
#import "Y:\\bin\\x86\\lpvCore.dll"
或者
#import "progid:LPV.LImage"
或者
#import "libid:c34b3e9e-6dea-4aa9-b500-0266f90dc15f"
- 创建类及其对应的接口,以 LImage 为例:
#define LPV_COM
#include "LPVCore.h"
#include "LPVGeom.h"
#include "LPVPat.h"
ILMatchPtr m_lmatch(__uuidof(LMatch));
m_lmatch->MaxCount = 1;
m_lmatch->AngleTolerance = 180;
LPVErrorCode errCode = m_lmatch->Match(m_source_img, m_roi, &m_match_results);
if (errCode != LPVErrorCode::LPVNoError) {
}
添加 LPV 到 Visual Studio 工程
C++
- 右键工程,打开工程的 属性 页。
- 在 C/C++ -> 常规 -> 附加包含目录 中,添加 LPV include 文件夹的路径。
- 在 链接器 -> 常规 -> 附加库目录 中,添加 LPV lib 文件夹的路径。
C#
- 右键工程的 Reference 项,点击 Add Reference
- 选择 COM 页面,找到 LPVCoreLib(必须)、LPVGeomLib(必须)及其他希望加入的 LPVXXXLib 算法库,勾选后点击 OK 。
COM
- 右键工程,打开工程的 属性 页。
- 在 C/C++ -> 常规 -> 附加包含目录 中,添加 LPV include 文件夹的路径。
- 在 C/C++ -> 预处理器 -> 预处理器定义 中,添加
LPV_COM
。
添加 LPV 到 CMake 工程
C++
编辑 CMakeList.txt,添加 include 路径和库链接路径。
# 设置 C++ 标准为至少 cpp11
set(CMAKE_CXX_STANDARD 11)
# 添加 include 路径
# ${LPV_INCLUDE_PATH} 指向 include 文件夹
target_include_directories(${PROJECT_NAME} ${LPV_INCLUDE_PATH})
# 链接到 lpv 模块
# ${LPV_LIB_PATH} 指向 lib 文件夹
function(link_lpv_lib module_name)
find_library(LPV_LIBRARY_${module_name} NAMES ${module_name} PATHS ${LPV_LIB_PATH})
if(NOT LPV_LIBRARY_${module_name})
message("!!!! LPV_LIBRARY_${module_name} not found")
else()
target_link_libraries(${PROJECT_NAME} ${LPV_LIBRARY_${module_name}})
endif()
endfunction()
link_lpv_lib(lpvCore)
link_lpv_lib(lpvGeom)
link_lpv_lib(lpvPat)
C#
COM
编辑 CMakeList.txt,添加 include 路径和预处理器定义。
# 启用 COM 接口
add_compile_definitions(LPV_COM)
# 添加 include 路径
# ${LPV_INCLUDE_PATH} 指向 include 文件夹
target_include_directories(${PROJECT_NAME} ${LPV_INCLUDE_PATH})
添加 LPV 到 Qt 工程
C++
如果您正在使用 Qt Creator,
- 右键项目,选择 添加库.
- 选择 外部库 ,然后点击下一步。
- 将 库文件 路径指向 LPV lib 文件夹下的动态链接库。
- 将 包含路径 路径指向 LPV include 文件夹。
- 勾选 Windows 平台和 动态 链接,取消勾选 为debug版本添加 d 作为后缀 。
- 点击下一步,然后完成。
或者,您也可以手动编辑 .pro 文件,如下所示:
# 添加 include 路径
# ${LPV_INCLUDE_PATH} 指向 include 文件夹
INCLUDEPATH += $$LPV_INCLUDE_PATH
# 链接到 lpv 模块
# ${LPV_LIB_PATH} 指向 lib 文件夹
LIBS += -L$$LPV_LIB_PATH -llpvCore -llpvGeom -llpvPat
DEPENDPATH += $$LPV_LIB_PATH
C#
COM
手动编辑 .pro 文件,如下所示:
# 启用 COM 接口
DEFINES += LPV_COM
# 添加 include 路径
# ${LPV_INCLUDE_PATH} 指向 include 文件夹
INCLUDEPATH += $$LPV_INCLUDE_PATH