系统环境:
CPU:I7-6700
显卡:GTX 2080 SUPER
系统:windows10,CUDA10.1,cudnn7.6.5,OpenCV3.4.10(未设置with_QT项不影响QT正常调用),QT5.14.1
darknet文件说明:
(1)darknet.sln :得到darknet.exe,darknet的命令行格式,GPU模式;(测试和训练)
(2)darknet_no_gpu.sln :得到darknet_no_gpu.sln,darknet的命令行格式,CPU模式;
(3)yolo_cpp_dll.sln :得到yolo_cpp_dll.dll 和 yolo_cpp_dll.lib;是darknet的C++接口;GPU模式;(外部调用)
(4)yolo_cpp_dll_no_gpu.sln :得到yolo_cpp_dll_no_gpu.dll 和 yolo_cpp_dll_no_gpu.lib;是darknet的C++接口;CPU模式;
其中,第1和第3项为我们所需要的文件。
编译(CMAKE 3.18.4):
1)设置darknet源文件目录和build目录:
2)设置OPENCV目录,采用OPENCV3.4.10自编译版本(需勾选WITH_CUDA):
3)设置CUDA编译器:
4)Configure选用VS2017,x64;
CMAKE_INSTALL_PREFIX和INSTALL_LIB_DIR用于设置编译结果存放路径,不设置采用darknet默认路径
点击Configure和Generate生成相应的文件;
5)管理员打开VS2017,
生成 >> 生成解决方案;右键项目 >> 生成 即可生成对应的exe和lib文件。
QT调用yolo_cpp_dll.lib,编译器采用MSVC2017 64bit,非MinGW版本。
1)pro文件设置,yolo依赖OpenCV(With CUDA):
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lopencv_world3410
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lopencv_world3410d
else:unix: LIBS += -L$$PWD/lib/ -lopencv_world3410
LIBS += $$PWD/lib/yolo_cpp_dll.lib \
INCLUDEPATH += $$PWD/include \
D:/OpenCV3.4.10/build/install/include \
D:/OpenCV3.4.10/build/install/include/opencv \
D:/OpenCV3.4.10/build/install/include/opencv2 \
2)头文件:
#define OPENCV
#include "opencv2/opencv.hpp"
#include "yolo_v2_class.hpp"
3)源文件:
#pragma execution_character_set("utf-8")
#include "trobotsystem.h"
#include "ui_trobotsystem.h"
#pragma comment(lib, "C:/Users/xiaoffice/Desktop/TrobotSystem/lib/yolo_cpp_dll.lib")
可能的错误:
C:\Users\xiaoffice\Desktop\QTyolo\facdet\mainwindow.cpp:132: error: C2664: “std::vector<bbox_t,std::allocator<_Ty>> Detector::detect(image_t,float,bool)”: 无法将参数 1 从“cv::Mat”转换为“std::string”
with
[
_Ty=bbox_t
]
原因1:#define OPENCV必须在#include "yolo_v2_class.hpp"前
注意:yolo_cpp_dll.lib版本与OpenCV和QT运行版本不一致,需确保都为Release x64或 Debug x64版本
具体调用代码可参见博客https://blog.csdn.net/stjuliet/article/details/88073033,或私信交流。