Contents

  • 环境下载、编译
    • 1 OpenCV-4.5.4下载、配置
    • 2 CMake下载安装、配置
    • 3 下载、编译protobuf-3.4.0
    • 4 下载、编译ncnn
  • VS2017新建项目--编译yolov5
  • 输入图片测试检测效果
  • 调用本地摄像头,实时检测
  • 参考知乎、博客文章

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文件,将解压后目录里的以下红框中的路径添加到电脑环境系统变量里


2 CMake下载安装、配置

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


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

下载.zip文件后解压即可(这里不用安装cmake软件,如果要安装软件,可以下载上图中的.msi文件进行安装),打开解压文件找到bin文件,然后将该绝对路径 <cmake安装路径>\bin添加到电脑环境变量(系统变量)


3 下载、编译protobuf-3.4.0

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


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文件,包含如下:


4 下载、编译ncnn

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

mkdir -p build-vs2017cd build-vs2017cmake -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 ..nmakenmake install

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


VS2017新建项目–编译yolov5

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

2、下载yolov5s_6.0.bin和yolov5s_6.0.param两个权重文件 下载入口
将两个下载的文件存放于VS2017刚新建的项目的yolov5_test文件夹下,确保这两个文件和后面的.cpp文件在同一目录下

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


4、复制如下链接yolov5.cpp中的代码,粘贴到刚创建的.cpp文件里。
5、添加cpp所需要的依赖项(头文件、依赖库、链接输入)
如未正确添加依赖库,头文件会出现如下报错

添加开始:
(1)右键->属性

(2)选择release x64平台, VC++目录 -> 包含目录


在包含目录中逐一浏览找到下面所示的目录,添加到包含目录中去

包含目录:
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


(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

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

输入如下依赖项

libprotobuf.lib
opencv_world454.lib
ncnn.lib


6、VS2017中生成解决方案
原代码生成绝决方案不成功,我这边会出现如下报错,

这是由于IDE默认不适用sprintf这个旧函数。
解决方法:在yolov5.cpp里的头部加入#pragma warning(disable:4996)语句即可,添加完之后,重新生成解决方案。


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


输入图片测试检测效果


从yolov5.cpp的main函数中我们看到,需要传入检测图片的路径:
项目–属性–调试–命令参数

输入图片路径即可


点击运行,结果如下


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

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

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+yolov5调用摄像头进行检测 根据这位大佬的文章,自己走了一遍

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

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

  1. 使用YOLOv5实现单摄像头实时目标检测

    我将在上一节的基础上,一步一步展示如何实现单摄像头实时目标检测,其中包括我在配置过程中遇到的报错和解决方法. 实现单摄像头实时目标检测 将'--source'的默认值改为0 parser.add_ar ...

  2. 【玩转Jetson TX2 NX】(七)TX2 NX YoLoV4环境搭建+板载摄像头实时目标检测(详细教程+错误解决)

    1 YoLoV4环境搭建 直接下载,然后解压,最后移动到Jetson TX2 NX,如图所示,darknet下载链接: https://github.com/AlexeyAB/darknet 将解压的 ...

  3. 睿智的目标检测21——如何调用摄像头进行目标检测

    睿智的目标检测21--如何调用摄像头进行目标检测 学习前言 使用到的库 实现思路 实现代码 2020/4/26更新:FPS计算 FPS记录的原理 FPS实现代码 学习前言 好多人都想了解一下如何对摄像 ...

  4. 使用YOLOv5实现多摄像头实时目标检测

    这篇博客将在单摄像头目标检测的基础上,实现单网络多线程的实时目标检测. 实现方法 在detect.py同级目录下新建streams.txt文件,每个视频流源单独成行: 本地摄像头填0 USB摄像头填1 ...

  5. 使用YOLOv5实现多路摄像头实时目标检测

    文章目录 前言 一.YOLOV5的强大之处 二.YOLOV5部署多路摄像头的web应用 1.多路摄像头读取 2.模型封装 3.Flask后端处理 4.前端展示 总结 前言 YOLOV5模型从发布到现在 ...

  6. 使用YOLOv5实现实时目标检测结果保存

    本文将分享保存实时目标检测结果的方法,包括将目标信息逐帧保存到.txt文件中.逐帧输出检测结果图片.以及如何保存所有检测图片(包括视野中无目标的帧). 目录 0.准备 1.目标信息保存 2.检测图片保 ...

  7. 使用mediapipe和OpenCV实现摄像头实时人脸检测

    # 摄像头实时人脸检测 # opencv import timeimport cv2 # mediapipe ai工具包 import mediapipe as mp # 进度条库 from tqdm ...

  8. 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测

    树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测 本文将实现树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测,我们会先实现树莓派对视频文件的逐帧检测来验证算法流程, ...

  9. matlab实时摄像头处理,在MATLAB中调用摄像头实时地显示图像

    <在MATLAB中调用摄像头实时地显示图像>由会员分享,可在线阅读,更多相关<在MATLAB中调用摄像头实时地显示图像(1页珍藏版)>请在人人文库网上搜索. 1.clc;clf ...

最新文章

  1. java 初识对象和对象引用的关系
  2. 注册表数据提取工具RegRipper
  3. 这几种Java异常处理方法,你会吗?
  4. 电厂运维的cis数据_变配电智能化运维作用和优点,智慧供配电物联网
  5. php iis redis,iis windows phpstudy安装redis扩展
  6. html 表单js验证,JavaScript使用表单元素验证表单
  7. java List 常见坑
  8. topcoder srm 525 div1
  9. socket网络编程-字典
  10. 《从0到1学习Flink》—— Flink 项目如何运行?
  11. XmlHelpers
  12. 开会坐在后面,意思是不感兴趣
  13. [偏相关分析]偏相关系数计算及假设检验
  14. 安装fitz报错_Kylo单机安装详解
  15. 实例总结C#反射基础知识[原创]
  16. egret实现微信排行榜功能 (2018-8-20)
  17. 【产品】UI设计:哪些字体可以商用
  18. ubuntu 18.04 安装postgre+postgis+pgadmin3+导入shapefile
  19. Docker进入/退出容器命令
  20. 5款良心电脑软件,有一款虽已停更,却依然免费使用

热门文章

  1. 深度对比:电子合同与纸质合同到底有哪些差异?
  2. android地图画线,绘制折线-在地图上绘制-开发指南-Android 轻量版地图SDK | 高德地图API...
  3. Linux运维10:scp命令详解
  4. 变形金刚2中的各个角色,及车型(带图)第一篇。
  5. 林业调查规划设计单位资质办理认定
  6. 三角形公式 [重心, 内心, 外心, 垂心]
  7. 2022年煤矿探放水考题及模拟考试
  8. mac上免费的音频剪辑软件在哪里可以快速下载
  9. elliptic-curve签名验证verify signature in EdDSA
  10. java程序员那些提升_Java程序员如何进行自我提升?