opencv4.5.x+cuda11.x和源码编译及yolov7用C++DNN部署测试

一、准备工作

1、下载opencv源码,下载OpenCV4.5.4
https://github.com/opencv/opencv
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

https://github.com/opencv/opencv_contrib
同理opencv_contrib也下载4.5.4版本,点击tags,找到4.5.4版本,点击进去,下载如下的压缩包解压。
在这里插入图片描述

2、下载cmake,安装版本为:cmake 3.13.4

https://cmake.org/

二、CMake编译工作

3、新建cudabuild
在这里插入图片描述
点击config/选择编译版本对应64位的
4.
在这里插入图片描述
ffmpeg:
下载opencv_videoio_ffmpeg_64.dll和opencv_videoio_ffmpeg.dll放E:\opencv\opencv\sources\3rdparty\ffmpeg目录下
https://raw.githubusercontent.com/opencv/opencv_3rdparty/40b4666d1aa374205fd61373496e15d92ecd5313/ffmpeg/opencv_videoio_ffmpeg_64.dll
https://raw.githubusercontent.com/opencv/opencv_3rdparty/40b4666d1aa374205fd61373496e15d92ecd5313/ffmpeg/opencv_videoio_ffmpeg.dll
添加哈希code的dll文件放E:\opencv\opencv\sources\.cache\ffmpeg
在这里插入图片描述
ippicv同理:
打开cmake文件手动下载
在这里插入图片描述
在这里插入图片描述
添加完下载后,点击generate生成完毕。
之后,添加扩展包路径:在这里插入图片描述
再者cuda支持都勾上;
在这里插入图片描述
然后,test包取消编译;
在这里插入图片描述
以上都完成后再次点击config,生成完成后有个CUDA_FAST_MATH勾上,它上一个不要勾
在这里插入图片描述
然后取消xfeature2d模块,不要打勾
在这里插入图片描述
同时取消wechat_qrcode模块,不要打勾
在这里插入图片描述
最后取消face模块,不要打勾
在这里插入图片描述
最后点击generate,编译完成。

三、vs配置前生成libopencv库

一、E:\opencv\opencv\cudabuild下CMake编译完成后,会生成OpenCV.sin点击打开进入vs,选择release/x64
点击ALL_BUILD右键生成。
在这里插入图片描述

在这里插入图片描述
点击INSTALL右键生成。
在这里插入图片描述
在这里插入图片描述

四、vs配置生成的libopencv库(一次配置后续不用配)

关闭解决方案,点击视图/其他窗口/属性管理器/releasex64/Microsoft.Cpp.x64.user/属性
添加包含目录:

E:\opencv\opencv\cudabuild\install\include\opencv2
E:\opencv\opencv\cudabuild\install\include

添加库目录:

E:\opencv\opencv\cudabuild\install\x64\vc15\lib

连接器/输入/附加依赖项

opencv_aruco454.lib
opencv_barcode454.lib
opencv_bgsegm454.lib
opencv_calib3d454.lib
opencv_ccalib454.lib
opencv_core454.lib
opencv_cudaarithm454.lib
opencv_cudabgsegm454.lib
opencv_cudacodec454.lib
opencv_cudafeatures2d454.lib
opencv_cudafilters454.lib
opencv_cudaimgproc454.lib
opencv_cudalegacy454.lib
opencv_cudaobjdetect454.lib
opencv_cudaoptflow454.lib
opencv_cudastereo454.lib
opencv_cudawarping454.lib
opencv_cudev454.lib
opencv_datasets454.lib
opencv_dnn454.lib
opencv_dnn_objdetect454.lib
opencv_dnn_superres454.lib
opencv_dpm454.lib
opencv_features2d454.lib
opencv_flann454.lib
opencv_fuzzy454.lib
opencv_hdf454.lib
opencv_hfs454.lib
opencv_highgui454.lib
opencv_imgcodecs454.lib
opencv_imgproc454.lib
opencv_img_hash454.lib
opencv_intensity_transform454.lib
opencv_line_descriptor454.lib
opencv_mcc454.lib
opencv_ml454.lib
opencv_objdetect454.lib
opencv_optflow454.lib
opencv_phase_unwrapping454.lib
opencv_photo454.lib
opencv_plot454.lib
opencv_quality454.lib
opencv_rapid454.lib
opencv_reg454.lib
opencv_rgbd454.lib
opencv_saliency454.lib
opencv_shape454.lib
opencv_stereo454.lib
opencv_stitching454.lib
opencv_structured_light454.lib
opencv_superres454.lib
opencv_surface_matching454.lib
opencv_text454.lib
opencv_tracking454.lib
opencv_video454.lib
opencv_videoio454.lib
opencv_videostab454.lib
opencv_ximgproc454.lib
opencv_xobjdetect454.lib
opencv_xphoto454.lib

获取脚本lib.py:

import os
from os import path
#定义一个函数,方法
def scanner_file(url):
#获取当前路径下的所有文件或者文件夹
	files = os.listdir(url)
# print(files)
#拼接路径
	for f in files:
# real_path = url + "\\" + f
		real_path = path.join(url,f)
# print(real_path)
#判断是否是文件
		if path.isfile(real_path):
			# print(path.abspath(real_path))
			print(f)
			# if
#是目录(文件夹)
		elif path.isdir(real_path):
			scanner_file(real_path)
#其他情况
		else:
			print("其他情况")
			pass
scanner_file("E:\\opencv\\opencv\\cudabuild\\install\\x64\\vc15\\lib\\")#这里只是用D盘举例。

添加环境变量:

E:\opencv\opencv\cudabuild\install\x64\vc15\bin

删除之前配置opencv的bin目录,这样就配置完成。

五、代码验证

目录展示:
在这里插入图片描述
注意:
1、参考博客:https://blog.csdn.net/m0_59135992/article/details/125932955
2、使用Bubbliiiing的yolov7代码部署,代码地址:https://github.com/bubbliiiing/yolov7-pytorch

模型的的训练看B导即可,up主地址:https://blog.csdn.net/weixin_44791964/article/details/125827160

模型训练完成之后,在predict.py中设置mode = "export_onnx"即可生成。

注意,此处有个坑,B导的yolov7代码输出的onnx只有1class.size20*20这一层,需要在nets/yolo.py文件中修改一下。

修改之前:(在yolo.py的最下面)

 # 第三个特征层
          # y3=(batch_size, 75, 80, 80)
        ---------------------------------------------------#
        out2 = self.yolo_head_P3(P3)
        #---------------------------------------------------#
        #   第二个特征层
        #   y2=(batch_size, 75, 40, 40)
        #---------------------------------------------------#
        out1 = self.yolo_head_P4(P4)
        #------------------------------
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的渔WZH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值