windows10+Cmake+VS编译opencv

背景:

        需要读取多个摄像头的视频流,刚开始都使用opencv-python读取 。消耗大量cpu资源,

cpu长时间占比100%,导致其他任务进程缓慢,考虑读取视频流使用cuda加速,减少cpu负载。

版本:windows10 + cmake3.30+vs2019+opencv4.9.0
CMake官网下载地址:cmake.org/download/

vs2019下载:你高兴也可以下载最新的https://my.visualstudio.com/Downloads?q=visual%20studio%202019&wt.mc_id=o~msft~vscom~older-downloads

opencv4.9.0下载:https://github.com/opencv/opencv

下载的opencv应该有俩包:opencv_contrib-4.9.0,opencv-4.9.0
除此之外你还需要配置cuda和和其他信息:

(这一步你需要自己找其他资料查看版本对上即可很简单)

需要注意的是 环境变量配置  cuDNN文件复制到cuda Toolkit文件夹的bin和include中
cuda Toolkit版本:11.3.1 cuda-toolkit下载,nvcc -V显示版本
cuDNN版本:8.2.1 cuDNN下载

如果你需要解析视频流你还需要下载:
 Nvidia Video Codec SDK 下载地址:https://developer.nvidia.com/video-codec-sdk-archive

此项为英伟达视频编解码库,若不需要可以在CMake中取消勾选WITH_NVCUVID与WITH_NVCUVENC解决。(我需要我下载了)
若需要安装,则需要下载Nvidia Video Codec SDK(下载地址)下载完成后解压,将Lib和Interface中所有文件分别复制到CUDA Toolkit文件夹下的lib和include中解决。

为了后续我们方便编译 你还需要安装:(网上有教程自己查找一下很简单)

注意的是 环境变量配置

NASM 下载地址:Index of /pub/nasm/releasebuilds/2.14.02/win64

ffmpeg下载地址:FFmpeg

以上环境我们准备的差不多了,接下来开始编译:

在 opencv-4.9.0 文件夹中 新建一个名为 build 的文件夹 (名随你,你高兴就好)

下面使用cmake-gui操作。

如果你在下面过程中不是很顺利 有其他问题 你需要自行查找资料,每个人编译的目的不同
可能需要下载的东西不同,和配置项不同,我的目的很简单,使用一下代码:
 

decoder = cv2.cudacodec.createVideoReader(file_path)

1、打开cmake-gui,指定opencv工程路径后点Configure
下面应为我已经编译过一次 所以只看红框内就行


2、选安装的vs版本,使用本机默认编译器。第二行空着的是生成选项,新版cmake默认是x64,64位机器就不用填,老版本cmake默认可能是32位的。需要手动填x64


3、第一次Configure结束,出来一堆编译的选项,中间遇到什么错误警告都不用管,反正后面还要再点


4、搜JAVA,BUILD_JAVA取消勾选


5、搜TESTS,BUILD_TESTS取消勾选


6、搜VTK,WITH_VTK取消勾选


7、搜NONFREE,勾选OPENCV_ENABLE_NONFREE


8、搜PYTHON3,能勾选的全勾选,环境地址会默认给到anaconda的base环境,不用改到时候用base环境即可


9、搜CUDA,全部勾选


10、点击Add Entry,增加WITH_CUDNN配置


11、搜MODULES,OPENCV_EXTRA_MODULES_PATH设置为opencv_contrib的modules文件夹路径


12、再次点击Configure,警告不用管,一般会遇到很多下载失败,应为需要下载国外的一些包,

如果你有vpn的话 可以设置一下载包时的代理

如果你使用的是 CMake 3.19 或更高版本,可以在 CMakeLists.txt 文件中添加一些脚本来自动化设置。例如,你可以创建一个 CMake 配置脚本 SetupProxy.cmake,内容如下:

if (DEFINED ENV{http_proxy})
    message(STATUS "HTTP proxy is set to $ENV{http_proxy}")
else()
    set(ENV{http_proxy} "http://127.0.0.1:7890")
    message(STATUS "Setting HTTP proxy to http://127.0.0.1:7890")
endif()
if (DEFINED ENV{https_proxy})
    message(STATUS "HTTPS proxy is set to $ENV{https_proxy}")
else()
    set(ENV{https_proxy} "http://127.0.0.1:7890")
    message(STATUS "Setting HTTPS proxy to http://127.0.0.1:7890")
endif()

然后在 CMakeLists.txt 文件中将下面代码拷贝过去 放在最上面就行:

include(SetupProxy.cmake)

我的文件夹路径:

配置完成之后 继续  Configure 这样就应该不会有下载错误了,
如果你还有其他的错误 不要慌 仔细阅读 查找资料 相信你一定可以解决

(从头再来也未尝不可)

找到这个算力配置  留下所框住的   3.0 的太老

找到这个选上 

 13、没有错误和失败,警告无所谓,点击Generate


14、生成结束用vs打开项目15、上方选到Release x64,右键ALL_BUILD,点击生成,时间有点长需要等带

上面编译完成后 别忘了安装 右击 ALL_BUILD 下方的 INSTALL 完成即可
16、安装成功

完成之后:这个路径加到环境变量

将这个路径下的这个pyd文件 拷贝到你编译的python的环境包下
 

到此结束 运行完美

 

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奔跑的蜗牛..

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

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

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

打赏作者

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

抵扣说明:

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

余额充值