flask接口非常简单 我简化成了两个文件
https://download.csdn.net/download/Andrwin/12408796
改成动态链接库有点复杂
所有需要的环境见上篇文章
https://blog.csdn.net/Andrwin/article/details/106077665
用vs2017打开C:\Users\nvidia\Desktop\darknet-master\darknet-master\build\darknet\yolo_cpp_dll.sln
其中yolo_cpp_dll.vcxproj也像上篇文章那么改
配置按照上篇文章part7的步骤改
编译以后在x64文件夹内会生成yolo_cpp_dll.dll和yolo_cpp_dll.lib这两个关键文件
还需要几个其他文件,都在项目空间内
- darknet.h
- opencv_ffmpeg340.dll
- opencv_ffmpeg340_64.dll
- opencv_world340.dll
- opencv_world340d.dll
- pthreadGC2.dll
- pthreadVC2.dll
- voc.data
- voc.names
- yolo_cpp_dll.dll
- yolo_cpp_dll.lib
- yolo_v2_class.hpp
- yolov3.cfg
- yolov3.weights
然后vs2017新建一个空的项目
main.cpp如下
#include <iostream>
#ifdef _WIN32
#define OPENCV
#define GPU
#endif
#include "yolo_v2_class.hpp" //引用动态链接库中的头文件
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#pragma comment(lib, "opencv_world340d.lib") //引入OpenCV链接库
#pragma comment(lib, "yolo_cpp_dll.lib") //引入YOLO动态链接库
void draw_boxes(cv::Mat mat_img, std::vector<bbox_t> result_vec, std::vector<std::string> obj_names,
int current_det_fps = -1, int current_cap_fps = -1)
{
int const colors[6][3] = { { 1,0,1 },{ 0,0,1 },{ 0,1,1 },{ 0,1,0 },{ 1,1,0 },{ 1,0,0 } };
for (auto &i : result_vec) {
cv::Scalar color = obj_id_to_color(i.obj_id);
cv::rectangle(mat_img, cv::Rect(i.x, i.y, i.w, i.h), color, 2);
if (obj_names.size() > i.obj_id) {
std::string obj_name = obj_names