ncnn opencv VS2017 window10 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下载入口
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-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文件如下:

在这里插入图片描述


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

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【资源说明】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【项目介绍】 基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip 基于ncnnyolov5部署实现调用摄像头完成目标检测源码(带模型文件+编译方法).zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值