yolov5 调用自己的dll(windows——c++)

看我的效果

 

首先我 对代码 进行了2次封装。 目前不需要安装环境直接可以运行的。

主要把路径修改好

本来以为 这个问题应该封装的时候 老代码 会判断图片是否为空 有个return 0;

封装的时候我记得把他删掉了。不影响检测。 就是不好看。

回来发现在最后应该少了那个库;(太多了不知道少那个不找了)

程序是没有大问题的。下载下来以后 填好路径 就可以了

在封装前可以跑14ms 封装之后188ms (可能是跨平台影响的)

下面就是我封装好的文件 ——我的模型只有一个类别

链接:https://pan.baidu.com/s/1knCEqc24CDSeKC60DI0ghw 
提取码:o0sx 
--来自百度网盘超级会员V2的分享

补充 找到了

链接:https://pan.baidu.com/s/1g0le_3HY0DXlOIf_nrt3Fg 
提取码:kkqt 
--来自百度网盘超级会员V2的分享

把这个放里面  就没有报错了

 

好了   c++   能好了  搞个py 的版本

我写了一个py的接口  又封装在了pyside(qt)里面

 

功能就不展示了   

链接:https://pan.baidu.com/s/1qP86aMo0koltxDBWF5Isew 
提取码:xj8k 
--来自百度网盘超级会员V2的分享

下面这是yolox的封装  (我用的官网的模型,类别是coco)

 x比5简单

链接:https://pan.baidu.com/s/1MGGkgU0pTuCQIdE-_b5-Vg?pwd=5nej 
提取码:5nej 
--来自百度网盘超级会员V3的分享

上一次移植后的ms  ——193

初步考虑可能是封装的源码有问题

经过我重新封装  并且移植后  为30ms

移植前

移植后

简单说下怎么生成

 第一步跑通   trt  生成的engine  并且测试成功

 2  编写代码      改cmake    编译

3  releas   生成dll

 

 4.配环境  跑  dll   

 链接:https://pan.baidu.com/s/1Kwgf2DCHcdcoXNNq2B-7qw?pwd=o1yw 
提取码:o1yw 
--来自百度网盘超级会员V3的分享

新加 检测整个文件夹的接口

链接:https://pan.baidu.com/s/1MggzPN3uuAfqDTDwkE2xtw?pwd=0k1u 
提取码:0k1u 
--来自百度网盘超级会员V3的分享

如果出现  tplj  错误

解决  在Detection.h  39行加入

	int tplj(std::string img_dir, std::vector<cv::Rect>& Boxes, std::vector<const char*>& ClassLables);

 并且在  pch.h  添加、

virtual int tplj(std::string img_dir, std::vector<cv::Rect>& Boxes, std::vector<const char*>& ClassLables) = 0;

 

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
YOLOv5打包成动态链接库(DLL)可以方便地在不同平台上使用。下面是将YOLOv5打包成DLL的步骤: 1. 首先,需要将YOLOv5的源代码下载到本地计算机上,并确保通过命令行或终端在YOLOv5目录下运行成功。确保已安装好相关的依赖库和工具,例如PyTorch、NumPy等。 2. 在YOLOv5的目录下创建一个新的文件夹,用于存放DLL相关的文件。 3. 创建一个名为wrapper.cpp的C++源文件,并将以下代码复制到其中: ```cpp #include <iostream> #include <string> #include <windows.h> extern "C" __declspec(dllexport) void detectImage(std::string imgPath) { std::string command = "python detect.py --source " + imgPath; system(command.c_str()); } ``` 此代码中,包含了一个名为detectImage的函数,该函数接收一个字符串参数imgPath,代表待检测的图片路径。函数内部通过调用system函数,在命令行中执行`python detect.py --source imagePath`命令,其中`imagePath`代表传入的图片路径。 4. 在YOLOv5目录下创建一个名为wrapper.def的文件,并将以下内容复制到其中: ``` LIBRARY "YOLOv5DLL" EXPORTS detectImage ``` 此文件用于定义导出函数的符号。 5. 在命令行中进入到YOLOv5目录,并执行以下命令来生成DLL文件: ``` g++ -c -Wall -Werror -fpic wrapper.cpp g++ -shared -o wrapper.dll wrapper.o wrapper.def ``` 第一条命令用于将C++源文件编译为对象文件,第二条命令用于将对象文件链接为DLL文件。 6. 生成的wrapper.dll文件即为打包完成的YOLOv5动态链接库。此时,可以在其他的项目中使用该DLL文件,调用其中的detectImage函数来进行目标检测。 注意:上述步骤是在Windows平台上进行的,如果是在其他操作系统上,可能需要修改部分命令和代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WangSaLe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值