压缩包安装
- 解压 lpv_sdk_x.x.x.x.zip 文件到任意目录。
- [可选] 如果未安装 Visual C++ Redistributable Package 14 或以上版本,需从微软官方网站下载安装,也可以从我们提供的下载链接下载。
- 使用压缩包安装需手动注册 LPV 模块。
手动注册
- 右键 LPV 根目录下的 reg_run_as_admin.bat 文件,选择以管理员运行,在所有平台(x64和x86)下注册所有授权的 LPV 模块。
- 双击运行 LPV 根目录下的 check_lpv_module_path.bat 文件,可查看已注册的 LPV 模块路径。
安装包安装
下载 lpv_x.x.x.x_installer.exe 安装包。按照安装包步骤选择合适的文件夹安装 LPV 模块。安装包将自动执行解压 LPV 各模块、安装运行时库、注册 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 运行目录下的 lpvKeyTool.exe ,生成 lpv.key 文件。
- 将生成的 lpv.key 文件发给我们或者您的 LPV SDK 技术支持,我们将为您的机器进行授权,并发回 **.lic** 授权文件。
- 您可按照以下任一方式部署授权文件:
- 将授权文件放在安装后的运行根目录下 (./runner)。
- 将授权文件放在用户目录下 (AppData%/LPV)。
- 打开任意一个 demo 程序,弹出未授权提示,选择 RETRY 并选择上传授权文件,我们将自动复制该文件到可授权的目录。
集成和调用
添加库到 Visual Studio 工程
C#
- 右键工程的 Reference 项,点击 Add Reference
- 选择 COM 页面,找到 LPVCoreLib(必须)、LPVGeomLib(必须)及其他希望加入的 LPVXXXLib 算法库,勾选后点击 OK 。
- 在代码文件中添加
using LPVXXXLib;
,以使用 LPV 中的算法类:
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);
LPV 基础模块,提供图像、检测区域、绘制等基础功能。
Definition: LPVCore.idl:103
LPVErrorCode
LPV 算法或函数运行过程中遇到的错误。
Definition: LPVCore.idl:206
LPV 几何库,提供几何形状相关的数据定义、计算和测量功能。
Definition: LPVGeom.idl:50
LPV 模板匹配模块,用于提供模板匹配功能。
Definition: LPVPat.idl:50
C++
我们推荐使用基于 编译器 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 模块为例,在代码中添加以下导入命令: 或者
#import "Y:\\runner\\x86\\lpvCore.dll"
或者
#import "progid:LPV.LImage"
或者
#import "libid:c34b3e9e-6dea-4aa9-b500-0266f90dc15f"
- 创建类及其对应的接口,以 LImage 为例:
#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) {
}
另外对于 QT 程序,也可使用 Active Qt 框架 生成 LPV 类的 QAxObject 形式的封装,请参照 QT 的官方教程。