矩视智能机器视觉软件SDK使用教程(LabView版)
1.概述(www.nb-ai.com)
2.环境配置
-
支持的操作系统: Windows10/11 X64
-
软件依赖:
此SDK只支持在Nvidia显卡上运行。不支持 AMD 等其他品牌!
-
支持的显卡类型:英伟达GPU(支持算力为“6.1”、“7.5”、“8.6”的GPU)。具体型号见工作台的模型下载界面中的“选择硬件”。

在英伟达官网可以查到显卡算力
-
支持的显卡驱动版本:不低于cuda version 11.6 (在终端命令窗口中输入“nvidia-smi.exe”即可查询cuda version)

3.快速入门
- 下面给出一个示例,帮助您快速了解如何使用SDK完成 LabView 软件开发。本示例使用LabView(2022 Q3版本)以及 LabView Vision Development模块(2022 Q3版本)。
3.1 解压SDK
- 将下载好的SDK文件解压到安全的路径下,如下所示:

3.2 添加环境变量
-
下面开始添加系统环境变量,打开“此电脑”,空白位置右键,然后选择“属性”,点击“高级系统设置”,点击“环境变量”,出现如下界面。然后选中“Path”,点击“编辑”

-
点击“新建”,再点击“浏览”

-
选择SDK文件夹下的
bin文件夹:
-
将此环境变量上移到第一个

操作完成点击“确定”。
3.3 配置License文件
- 请将
License.txt文件放到SDK文件夹下(放置License.txt文件的位置请以当前文档为准)
关于如何生成License.txt文件,参见: 如何获取License - Neurobot
3.4 修改并运行示例代码
-
双击打开SDK文件夹下
dllrun0525.vi文件,如下:
-
点击
test image path旁文件夹图标选择单张测试图片

-
修改模型名称

-
点击
model path旁文件夹图标选择存放模型文件的文件夹

-
选择
device name(用CPU处理请选择cpu;用GPU处理请选择cuda)
-
设置
detect threshold(检测阈值,超过检测阈值即视为目标物体。detect threshold = -1代表默认值,默认检测阈值为0.7)
-
选择
color mode(彩色图像(RGB)请选择color;灰度图像请选择gray)
-
点击左上角运行(run)按钮,运行程序

结果如下:

-
如果程序出现报错,请查看这四个地方分析出错的原因:
is img,is loaded,load() return和predict() return。is img亮绿灯表示图片加载成功,反之图片加载失败;is loaded亮绿灯表示模型已经加载,反之模型未被加载;load() return显示0的时候表示模型加载成功;反之模型加载失败;predict() return显示0的时候表示模型预测成功,反之模型预测失败。调用函数说明章节定义了load() return和predict() return的各种返回值。
注意:如果程序出现报错,找到问题并修改好,再次运行依然出错的话,请重启LabView再运行!!!
4. 推理结果格式
- 模型对单张图片的推理结果是一个
string类型,存在predict results里,如下所示:
- 单张照片的推理结果可以有多个,单个结果的具体格式为:
x0,y0,x1,y1,score,label,label_index,row_index,col_index;mask_width;mask_height;
注意:结果之间由“,”或者“;”间隔,中间没有空格
| 变量 | 定义 |
|---|---|
x0 | 检测矩形框(bounding box)的左上角的x值 |
y0 | 检测矩形框(bounding box)的左上角的y值 |
x1 | 检测矩形框(bounding box)的右下角的x值 |
y1 | 检测矩形框(bounding box)的右下角的y值 |
score | 检测结果的置信度(confidence score) |
label | 检测结果的标签 |
label_index | 检测结果的标签索引 |
row_index | 用于OCR的自动排列,在开发中,暂时可以忽略 |
col_index | 用于OCR的自动排列,在开发中,暂时可以忽略 |
mask_width | 用于像素分割,在开发中,暂时可以忽略 |
mask_height | 用于像素分割,在开发中,暂时可以忽略 |
5. 调用函数说明
dllrun0525.vi文件引用了SDK文件夹下几个VI文件,其中重要的是:DestroyModel_525.vi,LoadModel_525.vi和PredictModel_525.vi。 这三个文件分别引用了neurobot_LabVIEW_Model_SDK_CN_V3.0\bin\neuro_det_sdk.dll中的load_model(),newPredict_modelVec()和destroy_model()函数 (可以打开Block Diagram进行查看)。
5.1 load_model()
int load_model(const char* model_name, const char* model_path, const char* device_name = "cuda", const int device_index = 0);
-
定义:
- 该函数用于加载模型
-
参数说明:
| 参数 | 解释 |
|---|---|
| model_name | 模型名称 |
| model_path | 模型所在路径 |
| device_name | 选择CPU处理:device_name="cpu"; 选择GPU处理:device_name="cuda" |
| device_index | 加载模型的显卡设备号。默认值为0(默认设备号),您也可以修改为其他设备号。 |
- 返回值:
- 返回一个int型变量。0代表执行成功,其他数字为错误码,具体如下:
| 返回值 | 定义 |
|---|---|
| 0 | 执行成功 |
| 1 | 配置文件找不到 |
| 2 | 未找到batch参数 |
| 3 | 未找到dete_thres参数 |
| 4 | 未找到class参数 |
| 5 | 缺少运行所需dll文件 |
| 6 | ARG-英伟达显卡报错 |
| 7 | 不支持 |
| 8 | 越界 |
| 9 | 内存不足 |
| 10 | 加载模型相关文件不存在 |
| 11 | 加载失败 |
| 12 | 状态计数 |
| 50 | 模型类型错误或无法读取model.conf文件 |
| 100 | 使用错误的模型类型 |
5.2 newPredict_modelVec()
int newPredict_modelVec(const char* model_name, uchar* ImgVec, int length, int row, int col, char* ret, float detect_thres = -1.0);
-
定义:
- 该函数用于预测待测试图片
-
参数说明:
| 参数 | 说明 |
|---|---|
| model_name | 模型名称(名称为英文名称) |
| ImgVec | 图像rgb数组(u8数组) |
| length | 图像rgb数组长度 |
| row | 图像高 |
| col | 图像宽 |
| ret | 预测返回值 |
| detect_threshold | 检测阈值,超过检测阈值即视为目标物体。detectThreshold=-1代表默认值,默认检测阈值为0.7。 |
- 返回值:
- 返回一个int型变量。0代表执行成功,其他数字为错误码,具体如下:
状态码(status)具体如下:
| 状态码 | 定义 |
|---|---|
| 0 | 执行成功 |
| 1 | 英伟达显卡报错 |
| 2 | 不支持 |
| 3 | 越界 |
| 4 | 内存不足 |
| 5 | 用于预测的相关文件不存在 |
| 6 | 预测失败 |
| 7 | 状态计数 |
| 50 | 授权文件不存在或无权限读取 |
| 51 | 授权文件格式不正确 |
| 52 | 授权文件指纹不匹配 |
| 53 | 未到授权开始时间 |
| 54 | 授权过期 |
| 55 | 系统时间曾经回滚 |
| 56 | 无写授权文件权限 |
| 57 | 授权相关未知错误 |
| 58 | 授权文件版本与SDK版本不同 |
| 59 | 标签数目超出限制 |
5.3 destroy_model()
void destroy_model(const char* model_name);
-
定义:
- 该函数用于将模型从显卡中清除
-
参数说明:
| 参数 | 说明 |
|---|---|
| model_name | 模型名称(名称为英文名称) |
- 返回值:
- 无
更多推荐


所有评论(0)