赞
踩
其他相关链接:
yolov3 训练模型操作流程(包含所有资源下载)
yolov4 训练模型操作流程(包含所有资源下载)
在window10下安装GPU版的darknet
下载coco数据集并训练自己的模型
(利用谷歌提供的虚拟盘)在colab上训练yolo模型(详细操作流程)
本方法采用darknet自带的yolo_cpp_dll.dll来实现在c++代码中调用darknet;
github地址:[https://github.com/AlexeyAB/darknet](https://github.com/AlexeyAB/darknet)
打开darknet主目录下 build\darknet 目录,打开yolo_cpp_dll.sln文件
打开项目属性:
检测CUDA C/C++ 路径:
加载 opencv路径(包含目录,库目录,链接器-输入-附加依赖项)
具体操作可参考: VS2015安装opencv3.4.5步骤
然后点击生成,最后可以在x64文件夹下找到最新生成一些文件:
目前以QT项目为例:
3.1 项目中需要添加yolo_v2_class.hpp
,在 darknet\include 目录下可以找到:
3.2 在项目目录下添加:yolo_cpp_dll.dll
和yolo_cpp_dll.lib
:
然后可在yolo_v2_class.hpp 里添加:#pragma comment(lib, "yolo_cpp_dll")
3.3在QT的pro文件中添加相关链接:
LIBS += -L$$quote(C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64) -lcublas -lcuda -lcudadevrt -lcudart -lcudart_static -lOpenCL \ #cuda路径
-L$${PWD} -lyolo_cpp_dll \ #yolo_cpp_dll.lib路径
3.4 调用yolo_v2_class.hpp的Detector类
源码:
预先准备:
yolo_v2_class.hpp(下载的darknet包里找)
yolo_cpp_dll.dll(yolo_cpp_dll.sln编译生成)
yolo_cpp_dll.lib(yolo_cpp_dll.sln编译生成)
最简化版
#include "yolo_v2_class.hpp" #include "opencv2/opencv.hpp" int main() { //cfg 文件路径 std::string cfg_file = "D:\\workspace\\qt_project\\yolo_demo\\yolov3.cfg"; //weight 文件路径 std::string weights_file = "D:\\workspace\\qt_project\\yolo_demo\\yolov3.weights"; // 图像路径 std::string image_file = "D:\\workspace\\qt_project\\yolo_demo\\dog.jpg"; //设置yolo阈值 float thresh = 0.5; // 创建检测对象 Detector my_detector(cfg_file,weights_file,0); //yolo检测 std::vector<bbox_t> result_vec = my_detector.detect(image_file,thresh); //简单显示检测结果 cv::Mat image = cv::imread(image_file); //遍历bbox_t结构体 for(std::vector<bbox_t>::iterator iter=result_vec.begin();iter!=result_vec.end();iter++) { //画检测框 cv::Rect rect(iter->x,iter->y,iter->w,iter->h); cv::rectangle(image, rect, cv::Scalar(255,0,0), 2); } //显示效果图 cv::imshow("result",image); cv::waitKey(0); return 0; }
最终效果:
QT.pro文件需要添加yolo_cpp_dll的链接库地址:
demo项目结构:
demo文件结构:
在实际的项目中,通常会把检测独立出来作为一个类,实现多样性的功能,会在以后的一章讲解,静待链接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。