ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

Contents

OpenCV + NCNN 在VS2017调用yolov5记录
根据ncnn+opencv+yolov5调用摄像头进行检测这位博主的文章自己走了一遍,记录一下,防忘记!!!

环境下载、编译

1 OpenCV-4.5.4下载、配置

OpenCV-4.5.4下载地址:
链接:https://pan.baidu.com/s/1gzdkrbNWX1urmTIf5X2TOA?pwd=9u82
提取码:9u82
下载后解压exe文件,将解压后目录里的以下红框中的路径添加到电脑环境系统变量里

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

; 2 CMake下载安装、配置

这里默认已经安装配置了VS2017

cmake-3.24.0下载地址如下:cmake下载入口

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
下载.zip文件后 解压即可(这里不用安装cmake软件,如果要安装软件,可以下载上图中的.msi文件进行安装),打开解压文件找到bin文件,然后将该绝对路径

; 3 下载、编译protobuf-3.4.0

1、protobuf-3.4.0下载地址:protobuf下载入口
2、同样下载后解压即可(记住解压后的存放位置)
3、接着打开VS2017的x64命令行

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
4、在命令窗口中执行一下命令:
(1)使用cd 命令将操作路径移动到解压后的protobuf-3.4.0目录下;如上图
(2)再依次执行如下命令(一条一条执行):
> mkdir build-vs2017
> cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
>nmake
>nmake install

这个过程需要几分钟,全部完成后,protobuf-3.4.0文件下会生成build-vs2017文件,包含如下:

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

4 下载、编译ncnn

1、ncnn下载地址:GitHub链接 可直接用git clone该项目;
2、与protobuf一样,打开VS2017的X64命令终端,cd 进入到上一步clone的ncnn的根目录下;
3、逐一执行如下命令:
注意:在第三条命令中的 protobuf-root-dir 处,需要根据自己的protobuf根路径,修改3个地方

mkdir -p build-vs2017

cd build-vs2017

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=<protobuf-root-dir>/build-vs2017/install/include -DProtobuf_LIBRARIES=<protobuf-root-dir>/build-vs2017/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=<protobuf-root-dir>/build-vs2017/install/bin/protoc.exe -DNCNN_VULKAN=OFF ..

nmake

nmake install

编译完之后,生成build-vs2017文件如下:

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

VS2017新建项目–编译yolov5

1、先新建一个空项目,命名为yolov5

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
2、下载yolov5s_6.0.bin和yolov5s_6.0.param两个权重文件 下载入口
将两个下载的文件存放于VS2017刚新建的项目的yolov5_test文件夹下,确保这两个文件和后面的.cpp文件在同一目录下
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

3、在VS项目中新建一个.cpp源文件

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
4、复制如下链接yolov5.cpp中的代码,粘贴到刚创建的.cpp文件里。
5、添加cpp所需要的依赖项(头文件、依赖库、链接输入)
如未正确添加依赖库,头文件会出现如下报错
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
添加开始:
(1)右键->属性
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
(2)选择release x64平台, VC++目录 -> 包含目录
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
在包含目录中逐一浏览找到下面所示的目录,添加到包含目录中去

包含目录:
E:\OpenCV4\opencv\build\include
E:\OpenCV4\opencv\build\include\opencv2
E:\ncnn\ncnn\build-vs2017\install\include\ncnn
E:\ncnn\ncnn\build-vs2017\install\include

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
(3)、VC++目录 -> 库目录
同样的操作,在库目录中添加如下目录

库目录
E:\ncnn\ncnn\build-vs2017\install\lib
E:\OpenCV4\opencv\build\x64\vc15\lib
E:\protobuf\protobuf-3.4.0\build-vs2017\install\lib

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

(4)、链接器->输入->附加依赖项

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
输入如下依赖项

libprotobuf.lib
opencv_world454.lib
ncnn.lib

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
6、VS2017中生成解决方案
原代码生成绝决方案不成功,我这边会出现如下报错,
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
这是由于IDE默认不适用sprintf这个旧函数。
解决方法:在yolov5.cpp里的头部加入 #pragma warning(disable:4996)语句即可,添加完之后,重新生成解决方案。

到这里环境都配置完毕了,项目文件夹内容如下:

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

; 输入图片测试检测效果

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
从yolov5.cpp的main函数中我们看到,需要传入检测图片的路径:
项目–属性–调试–命令参数
ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
输入图片路径即可

点击运行,结果如下

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

调用本地摄像头,实时检测

我们之前检测是获取图片路径,这时我们就注释掉图片路径的读入,直接获取视频输入,然后传给

detect_yolov5(m, objects);
draw_objects(m, objects);

直接将原来main函数里的全部注释掉,替换成如下代码:

    cv::VideoCapture capture(0);

    cv::Mat frame;
    while (true)
    {
        capture >> frame;
        flip(frame, frame, 1);
        cv::Mat m = frame;
        std::vector<Object> objects;

        detect_yolov5(m, objects);
        draw_objects(m, objects);

        if (cv::waitKey(1) == 'q')
            break;

    }
    capture.release();

还要将 draw_objects函数里的最后一句waitKey(0)改成waitKey(10),不然窗口一直无限停留在第一帧检测帧。

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

实时检测效果如下:

ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

参考知乎、博客文章

ncnn+opencv+yolov5调用摄像头进行检测 根据这位大佬的文章,自己走了一遍

ncnn + VS2017 + win10 深度学习加速框架环境配置方法,保姆级详细易懂,一文Get

Original: https://blog.csdn.net/bank777777/article/details/126108910
Author: 笨可七
Title: ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/700972/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球