把darknet-yolov3封装成flask接口和dll动态链接库及调用

本文介绍了如何将darknet-yolov3模型封装成flask接口和dll动态链接库。详细阐述了flask接口的简化实现,以及在VS2017中编译生成dll所需步骤。文章还讨论了权重初始化的优化问题,提出了解决权重重复初始化导致错误的全局变量方案。
摘要由CSDN通过智能技术生成

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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值