在配置前需要准备的安装包:
(1)VS2015
(2)Opencv3.4.6
(3)CUDA10.1和CUDNN7.6.1
(4)Darknet 这个可以下载大佬已经编译好的版本,省去自己操作一番的功夫。https://github.com/AlexeyAB/darknet
(5)yolov3_weights权重文件,下载好了之后放到X64的文件夹下。
提示:最好用迅雷下载,百度云和浏览器下载速度慢到你发狂。
(一)安装VS2015
这个教程网上一堆,我在这里就不详说,教程链接:https://blog.csdn.net/qq_32795773/article/details/95614736
(二)安装opencv3.4.6
版本的话,不要装4.0以上的版本。
直接去官网下载 https://opencv.org/releases/
解压到自定义的文件夹。
接着配置环境变量,将文件夹build->x64->vc14->bin加入环境变量,不然之后VS2015配置opencv会找不到opencv_world346.dll文件。
(三)在VS2015中配置opencv3.4.6
现在VS2015中创建一个新的空项目Opencv-test。切换属性管理器窗口,这个在视图-》其它窗口中也有,但是可以直接在项目窗口的下方就有。接着打开Debug|X64下User的属性。
我已经配置好了,可以给大家看看我配置的情况,照着我这么配就可以了。
配置主要是三个部分:包含目录,库目录,附加依赖项
包含目录:build问价下的include,include/opencv,include /opencv2加入进来。
库目录:build->x64->vc14->lib加进来
附加依赖项:opencv_world346d.lib,大家就写debug版本的吧,因为我看到网上有人将两个lib加进来报错了,我这里没有报错,不知是什么原因。
点击应用确定,opencv在VS 2015中就配置好了,如果出现找不到opencv_world346d.dll的问题,可能是你没有配opencv 的环境变量。注意:出现这个问题,然后配环境变量之后,一定要重启vs2015才可以编译通过,不然就一直报错找不到dll文件。
现在建立一个main.cpp测试一下能不能用
#include
#include
using namespace cv;
int main() {
//读取图片文件
Mat src = imread("D:\lufei.jpg");
if (src.empty()) {
printf("文件不存在。。。");
return -1;
}
//创建一个窗口
namedWindow("src", CV_WINDOW_AUTOSIZE);
//在窗口中显示图片
imshow("src", src);
waitKey(0)
printf("0000");
return 0;
}
(四)安装CUDA和CUDNN
官网下载CUDA10.1
CUDNN需要注册一个账户才能下载。
接着就是傻瓜式安装,这里安装的位置就是默认位置,没有自定义,最好不要自己定义文件位置吧,防止后面搭建darknet出现找不到cuda文件的错误。
两个都下载好了之后,将CUDNN 文件的bin,include,lib下的文件复制到cuda->v10.1各自对应的文件夹下。
这个也要配置环境变量
最后在命令提示符下看看是否安装成功
(四)在VS2015中生成CPU版本的darknet_no_gpu.exe
这个比较简单,不需要修改什么文件,只需要将F:\Programs\Opencv3.4.6\opencv3.4.6\opencv\build\x64\vc14\bin下的三个dll文件放到darknet\build\darknet\x64下,这样才能用opencv的库展示图片。
接着打开no_gpu版本的解决方案。在VS2015的Release X64下重新生成该项目,生成成功之后在x64文件下就多了一个darknet_no_gpu.exe执行文件。
接着进入x64文件中找到darknet_yolo_v3.cmd,右键打开文件,这里可以使用NotePad++软件打开。
里面的exe文件默认的是darknet.exe,改成darknet_no_gpu.exe。保存双击cmd文件。
darknet_no_gpu.exe detector test cfg/coco.data yolov3.cfg yolov3.weights -i 0 -thresh 0.25 dog.jpg -ext_output
同文件写会保存预测的图片,predictions.jpg
(五)在VS2015中生成darknet.exe,也就是gpu版本的
在打开项目之前,将darknet.vcxproj中的cuda版本换成自己装好的版本,我的是10.1。
将平台工具集换成自己的安装的版本,我的是v140。
这些做好之后再重新生成项目。然后在X64的文件下也多了darknet.exe文件。
接着在darknet_yolo_v3.cmd中将exe换成darknet.exe其他的不变。保存关闭执行。GPU这边会提示compute_capability和cudnn_half。
(六)利用darknet测试视频。
这里的视频用的opencv自带的vtest.avi。将这个视频放到darknet 的x64文件夹下,当然你可以自己建立一个文件夹专门放测试的图片或者视频,只要在cmd文件中做个文件路径的修改就可以了。这里就用darknet_yolov3_vedio.cmd来测试,这个cmd文件用的是测试视频的命令,当然也可以运行darknet_yolo_v3.cmd,只要修改测试视频的命令就OK。
darknet.exe detector demo data/coco.data yolov3.cfg yolov3.weights test.avi -i 0
我用darknet.exe来测试。GPU是TX2080,所以速度挺快的。FPS能达到了60帧每秒。
(七)测试摄像头拍摄的实时视频。
这里我就不做详述,可以参考这个博主写的,我用手机测试成功了,你们可以试试。
https://blog.csdn.net/baidu_36669549/article/details/81510955