ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测
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调用摄像头实时目标检测相关推荐
- 使用YOLOv5实现单摄像头实时目标检测
我将在上一节的基础上,一步一步展示如何实现单摄像头实时目标检测,其中包括我在配置过程中遇到的报错和解决方法. 实现单摄像头实时目标检测 将'--source'的默认值改为0 parser.add_ar ...
- 【玩转Jetson TX2 NX】(七)TX2 NX YoLoV4环境搭建+板载摄像头实时目标检测(详细教程+错误解决)
1 YoLoV4环境搭建 直接下载,然后解压,最后移动到Jetson TX2 NX,如图所示,darknet下载链接: https://github.com/AlexeyAB/darknet 将解压的 ...
- 睿智的目标检测21——如何调用摄像头进行目标检测
睿智的目标检测21--如何调用摄像头进行目标检测 学习前言 使用到的库 实现思路 实现代码 2020/4/26更新:FPS计算 FPS记录的原理 FPS实现代码 学习前言 好多人都想了解一下如何对摄像 ...
- 使用YOLOv5实现多摄像头实时目标检测
这篇博客将在单摄像头目标检测的基础上,实现单网络多线程的实时目标检测. 实现方法 在detect.py同级目录下新建streams.txt文件,每个视频流源单独成行: 本地摄像头填0 USB摄像头填1 ...
- 使用YOLOv5实现多路摄像头实时目标检测
文章目录 前言 一.YOLOV5的强大之处 二.YOLOV5部署多路摄像头的web应用 1.多路摄像头读取 2.模型封装 3.Flask后端处理 4.前端展示 总结 前言 YOLOV5模型从发布到现在 ...
- 使用YOLOv5实现实时目标检测结果保存
本文将分享保存实时目标检测结果的方法,包括将目标信息逐帧保存到.txt文件中.逐帧输出检测结果图片.以及如何保存所有检测图片(包括视野中无目标的帧). 目录 0.准备 1.目标信息保存 2.检测图片保 ...
- 使用mediapipe和OpenCV实现摄像头实时人脸检测
# 摄像头实时人脸检测 # opencv import timeimport cv2 # mediapipe ai工具包 import mediapipe as mp # 进度条库 from tqdm ...
- 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测
树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测 本文将实现树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测,我们会先实现树莓派对视频文件的逐帧检测来验证算法流程, ...
- matlab实时摄像头处理,在MATLAB中调用摄像头实时地显示图像
<在MATLAB中调用摄像头实时地显示图像>由会员分享,可在线阅读,更多相关<在MATLAB中调用摄像头实时地显示图像(1页珍藏版)>请在人人文库网上搜索. 1.clc;clf ...
最新文章
- java 初识对象和对象引用的关系
- 注册表数据提取工具RegRipper
- 这几种Java异常处理方法,你会吗?
- 电厂运维的cis数据_变配电智能化运维作用和优点,智慧供配电物联网
- php iis redis,iis windows phpstudy安装redis扩展
- html 表单js验证,JavaScript使用表单元素验证表单
- java List 常见坑
- topcoder srm 525 div1
- socket网络编程-字典
- 《从0到1学习Flink》—— Flink 项目如何运行?
- XmlHelpers
- 开会坐在后面,意思是不感兴趣
- [偏相关分析]偏相关系数计算及假设检验
- 安装fitz报错_Kylo单机安装详解
- 实例总结C#反射基础知识[原创]
- egret实现微信排行榜功能 (2018-8-20)
- 【产品】UI设计:哪些字体可以商用
- ubuntu 18.04 安装postgre+postgis+pgadmin3+导入shapefile
- Docker进入/退出容器命令
- 5款良心电脑软件,有一款虽已停更,却依然免费使用
热门文章
- 深度对比:电子合同与纸质合同到底有哪些差异?
- android地图画线,绘制折线-在地图上绘制-开发指南-Android 轻量版地图SDK | 高德地图API...
- Linux运维10:scp命令详解
- 变形金刚2中的各个角色,及车型(带图)第一篇。
- 林业调查规划设计单位资质办理认定
- 三角形公式 [重心, 内心, 外心, 垂心]
- 2022年煤矿探放水考题及模拟考试
- mac上免费的音频剪辑软件在哪里可以快速下载
- elliptic-curve签名验证verify signature in EdDSA
- java程序员那些提升_Java程序员如何进行自我提升?