MFC+YOLOv3(cpu)

一:yolo在windows下的测试

下载vs2015 配置opencv3.4 环境,将AB-darknet在windows下测试。通过用VS2015打开darknet_no_gpu.sln,选择Release ×64模式,开始调试,进而生成可执行文件(.exe),完成测试。

二:yolo动态链接库的生成及测试

编译对应的工程是“yolo_cpp_dll.sln”,“release x64”版本

做完上面的操作,会在“xx\build\darknet\x64”路径下生成“yolo_cpp_dll.lib”和“yolo_cpp_dll.dll”两个文件,这两个东西就是yolo的动态链接库。

使用链接库的示例工程是“yolo_console_dll.sln”,“release x64”版本。编译出来后,“xx\build\darknet\x64”路径下多出一个“yolo_console_dll.exe”可执行文件,在“xx\build\darknet\x64”路径下加入权重文件以及自己的测试视频文件,双击可执行文件便可实现测试,或者用控制台打开并输入:

.\yolo_console_dll.exe data/coco.names cfg/yolov3.cfg yolov3.weights test.avi

三:如何新建空白项目调用yolo动态链接库

新建一个工程即空白项目,然后添加Yolo的动态链接库,进而实现在其它项目中完成对yolo动态链接库的调用。

具体操作:

一:准备工作

1、动态链接库(均在darknet-master\build\darknet\x64目录下)

(1)yolo_cpp_dll.lib

(2)yolo_cpp_dll.dll

(3)pthreadGC2.dll

(4)pthreadVC2.dll

2、OpenCV库(取决于使用debug还是release模式)

(1)opencv_world340d.dll

(2)opencv_world340.dll

3、YOLO模型文件

(1)coco.names

(2)yolov3.cfg

(3)yolov3.weights

4、头文件

(1)yolo_v2_class.hpp

头文件包含了动态链接库中具体的类的定义,调用时需要引用。

二: 在VS2015中新建一个空项目,在源文件中添加main.cpp,将准备工作中所有文件全部放入与main.cpp同路径的文件夹中,并且放入一个目标检测的测试视频,然后在main.cpp中添加相关代码即可。
参考链接

遇到编译错误,如 ‘sprintf’: This function or variable may be unsafe…
解决方案: 添加预处理指令:_CRT_SECURE_NO_WARNINGS

四.MFC+YOLO

在MFC中实现对yolo动态链接库的调用
参考链接
可能遇到的问题及解决办法:

问题1:新增头文件要加到合适位置,有的时候加在最上面就会出现意想不到的错误。
问题2:CT2A出现错误
解决:在将CString转换成string时,用T2A,即将CT2A用T2A替换并在其前添加USES_CONVERSION;
在这里插入图片描述

问题3:‘sprintf’: This function or
variable may be unsafe.

解决:对于VS系列的版本:打开项目----项目属性—配置属性----C/C++ ----预处理器----预处理定义,

添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE这两个宏。

问题4:std::max,std::min错误:应输入标识符的解决方法

解决:在std::max外加上括号,阻止宏替换,即(std::max)()。

问题5:只能利用mfc打开图片,却无法实现yolo检测

解决:路径用“\”,例如:
在这里插入图片描述

以上问题均已解决,便可成功实现MFC调用yolo动态链接库实现单张图片的检测。直接点击生成的.exe文件即可。
在这里插入图片描述

或者用vs2015打开工程:
在这里插入图片描述

按快捷键ctrl+F5。

原图:在这里插入图片描述

检测效果图:

在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值