Yolov5 动态链接库DLL导出(tensorrt版本——Labview调用)

Yolov5 动态链接库DLL导出(tensorrt版本——Labview调用)

延续上一篇Yolov5 动态链接库DLL导出(tensorrt版本——C++调用)文章内容,这里将yolov5源码封装成动态链接库的方式供其他平台调用,例如可使用labview调用函数,既能实现检测识别功能,又可以利用labview的特性,快速搭建界面,实现图形化编程。这里针对labview对函数重新打包封装,可供labview接口识别调用。

一、C++端函数封装打包

1.创建yolo_dll指针

延续上一篇的工程目录,在工程目录下的Detection.cpp文件中添加如下代码,创建YOLOV5*指针供后续封装函数使用:

Connect connect;
YOLOV5*  yolo_dll = connect.Create_YOLOV5_Object();

2.封装yolov5_initial初始化函数

添加如下封装函数:

_declspec(dllexport) int yolov5_initial(const char* engine_path)
{
	
	yolo_dll->Initialize(engine_path, 0);
	return 0;
}

形参为yolov5s.engine权重文件的路径

3.封装yolov5_Detect检测函数

添加如下封装函数:

_declspec(dllexport) int yolov5_Detect(int rows, int cols, unsigned __int8* imageR, unsigned __int8* imageG, unsigned __int8* imageB, const char* classlable[100], cv::Rect* boxes[100])
{
	cv::Mat img;
	std::vector<cv::Rect> Boxes;
	std::vector<const char*> ClassLables;

	cv::Mat srcImageR(rows, cols, CV_8U, &imageR[0]);
	cv::Mat srcImageG(rows, cols, CV_8U, &imageG[0]);
	cv::Mat srcImageB(rows, cols, CV_8U, &imageB[0]);
	cv::Mat merger_array_src[] = { srcImageB,srcImageG,srcImageR };
	merge(merger_array_src, 3, img);

	yolo_dll->Detecting(img, Boxes, ClassLables);

	for (size_t i = 0; i < ClassLables.size(); i++)
	{
		classlable[i] = ClassLables[i];
	}
	for (size_t i = 0; i < Boxes.size(); i++)
	{
		boxes[i] = &Boxes[i];
	}


	return Boxes.size();
}

说明:
1).输入图片格式转换(可参考原博客文档)
int rows, int cols, unsigned __int8* imageR, unsigned __int8* imageG, unsigned __int8* imageB
以上参数为了将labview图片与C++中的cv::Mat 图片格式进行转换,labview中将RGB图像拆分成RGB三个二维数组,和图片的imagesize(rows,cols)一并传入dll函数,opencv再利用内部函数将图片复原
2).识别信息输出
const char* classlable[100], cv::Rect* boxes[100]
利用两个指针数组,将识别结果(识别标签和识别框)输出给labview使用。
3).返回 Boxes.size()的大小,供labview解析指针数据使用
4).提供思路供参考,实际使用根据需求完善封装代码

4.添加好以上代码后重新生成解决方案,以下目录中找到dll备用
在这里插入图片描述

二、labview(2019 x64)端调用

1.调用yolov5_initial初始化函数,配置相关接口参数

在这里插入图片描述
在这里插入图片描述

2.调用dll中的yolov5_Detect函数,配置接口参数

在这里插入图片描述
关键数据类型配置
在这里插入图片描述
在这里插入图片描述
注意:和C++中封装函数的接口数据类型必须匹配,否则运行labview软件直接卡死退出

3.打开摄像头,捕获图片帧,将图片拆分成RGB三个数组,传入dll中的yolov5_Detect函数

在这里插入图片描述

4.用labview moveblock函数解析指针数据

在这里插入图片描述

5.利用识别结果,画框标注

在这里插入图片描述
效果演示:

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值