一、准备工作
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
二、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)
#------------------------------