Bootstrap

windows的CMake+OpenCV + OpenCV contrib+TensorRT的编译

目录

2 安装CMake

3 OpenCV源码安装

3.1 OpenCV源码下载

3.2 OpenCV contrib源码下载

3.3 安装OpenCV

3.4 安装OpenCV-crontrib

3.5 VS生成代码

4 环境配置

5 TensorRT安装

5.1 TensorRT安装

5.2 Python下安装TensorRT库


2 安装CMake
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。只是CMake的组态档取名为CMakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。

首选下载CMake软件安装包,地址如下:

Download | CMake
https://cmake.org/download/
我这里下载的是cmake-3.25.2-windows-x86_64.zip,(PS: 根据个人电脑windows系统位数下载对应的版本)

在这里插入图片描述
在这里插入图片描述

测试是否安装成功,打开终端(win+R快捷键然后输入cmd回车),输入 cmake --version后,出现下载的版本号即代表安装成功
在这里插入图片描述

3 OpenCV源码安装
3.1 OpenCV源码下载
首先需要去OpenCV的官网下载源码,本教程下载的是OpenCV-4.5.5版本的源码

在这里插入图片描述

下载之后解压到特定文件夹,我解压到了D:\soft\opencv\opencv-4.5.5
在这里插入图片描述

3.2 OpenCV contrib源码下载
之所以要下载OpenCV contrib源码,是因为自从OpenCV 3.0之后,很多经典的算法,比如sift和surf特征点检测算法,由于专利原因,已经不包含在OpenCV的源码当中了,需要下载OpenCV contrib包才能继续使用。于是OpenCV contrib的官网下载源码安装包

GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules
Repository for OpenCV's extra modules. Contribute to opencv/opencv_contrib development by creating an account on GitHub.
https://github.com/opencv/opencv_contrib

OpenCV contrib的版本记得要和OpenCV版本符合(例如下图我们选择的是4.5.5版本),还是要下载源码。
在这里插入图片描述

下载完解压,本文的路径为D:\soft\opencv\opencv_contrib-4.5.5

在这里插入图片描述

3.3 安装OpenCV
在安装CMake软件之后,就可以安装OpenCV源码了,具体步骤如下:

1 首先按下图操作:
在这里插入图片描述

2 弹窗出来的配置,按照自己的开发环境配置即可**(本文的环境是VS 2022,平台是X64平台)若编译32位,则区别于64位的一步,编译器平台选择 Win 32**,,然后点击"Finish"即可:

在这里插入图片描述

3 cmake的窗口开始打印信息

在这里插入图片描述

4 打印出来的信息中如果出现python、matlab相关的报错,例如下图,直接pass。(Python……ptsd,想到python就ptsd……想起某人爱用python造轮子……)

在这里插入图片描述

但是在编译过程中正常都会出现下载不成功的现象,这一步很多博客都没有写清楚如何排查,导致很多新手在之后VisualStudio阶段导包的时候出错。上一步完成之后,大部分情况下会报错。不出意外会看到如下的报错信息。

仔细阅读之后,我们应该查看一下CMakeDownloadLog.txt。使用Notepad++或者其他软件打开CMakeDownloadLog.tx
在这里插入图片描述
在这里插入图片描述

通过查看CMakeDownloadLog.txt文件可以看出,是由于Cmake去下载相关的包没有下载下来。所以根据红框处的信息我们需要自行下载,方法:将链接输入到浏览器,然后就会自动下载。一些链接输入到浏览器之后,显示的是文本,需要另存为文本到本地,千万不要复制!!!
下载之后将这些包拷贝到.cache文件夹下,并且需要更改包的名字(cmake下载包之后将校验的hash码重命名到了包中),下图以ippcv包为例:
下载的包原名为:ippicv_2020_win_intel64_20191018_general.zip
复制到CmakeDownloadLog.txt中的.cache文件夹下,并改名为:
879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip
根据CMakeDonloadLog.txt文件中的提示信息,将所有下载失败的安装包都下载下来,复制到对应的文件夹中,然后重新点击configure

在利用cmake编译Opencv源码时,编译最后出现一个警告提示:
CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory
忽略此警告后,编译仍然成功。因此,只需去除 OPENCV_GENERATE_SETUPVARS选项,将会configure成功。具体如下图:
去掉勾选后,再次点击上图的Configure ,

最后编译成功。结果如下图:
在这里插入图片描述

此时可以发现,不再有报错信息了, 同时也可以查看CmakeDownLoadLog.txt,已经不报错了:
在这里插入图片描述

3.4 安装OpenCV-crontrib
在cmake的OPENCV_EXTRA_MODULES_PATH之中输入之前下载的OpenCV-contrib的路径,精确到modules,OPENCV_ENABLE_NONFREE一定要勾选上!(BUILD_opencv_world)合并成一个dll

在这里插入图片描述

再次configure,不出意外的话,又看到一大堆报错信息,同样是由于有些安装包没有下载下来,再次根据CMakeDownloadLog.txt文件中的提示信息,将没有下载成功的安装包下载下来,并复制到对应的文件夹中,再次点击configure即可。

3.5 VS生成代码
找到build之后的OpenCV.sln文件,用visual studio2022打开。(使用管理员权限打开)

在这里插入图片描述

右击models下面的opencv_world,点击属性,如下图所示

在这里插入图片描述

对链接器中的启用增量链接进行修改,选择否

在这里插入图片描述

对CMakeTargets文件夹下的Install进行重新生成即可,如下图。这个时候要等上一段时间,可能是半个小时,也可能是好几个小时,主要看电脑性能。跑完之后出现如下错误不要慌,这个是不耽误使用的,这个报错是python导致的。先(ALL——BUILD、在Install生成)
在这里插入图片描述

在这里插入图片描述

以上咱们的opencv就算是编译完成了。跑完Debug版之后建议也去跑个Release**(也可以批量生成)**,这样两个环境下就都可以使用了。

4 环境配置
先配置系统环境变量,Windows控制台搜索即可查询到。
在这里插入图片描述

把之前install产出的bin的包的路径填进去,然后重启电脑才会生效。

在这里插入图片描述

然后创建一个空的"控制台应用"项目,就叫OpenCV-test

在这里插入图片描述

右键项目,更改属性。编辑VC++目录下的包含目录(其实就是英文版本的include path) ​​​​​,然后把install之后的include文件夹路径添加上去。注意,是install之后的include路径,不要填错成了其他的include路径。
在这里插入图片描述

然后我们编辑库目录(其实就是英文版的lib path),把install之后的lib目录输入进去(再次强调是install之后的lib目录)
链接器->附加依赖项->编辑,输入所有的xxxxx/install\x64\vc16\lib中 所有xxxd.lib文件名字

在这里插入图片描述
在这里插入图片描述

为了验证我们安装OpenCV的效果,我们需要使用测试案例进行测试,输入以下代码进行测试,可以正常显示图片,则说明OpenCV安装成功。

// OpenCV-test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
 
#include <iostream>
#include <opencv2/opencv.hpp>
 
int main()
{
    cv::Mat src = cv::imread("E:\\test.jpg");//图片路径
    if (src.empty())
    {
        std::cout << "pic is empty!\n";
        return -1;
    }
    cv::imshow("show", src);
    cv::waitKey(0);
    std::cout << "Hello World!\n";
}

5 TensorRT安装
首先需要在电脑上安装CUDA和cuDNN,这两个软件的安装教程可以参考其它博客Cuda和cuDNN安装教程(超级详细)_cuda安装_jhsignal的博客-CSDN博客
在这里插入图片描述

5.1 TensorRT安装
通过上面博主的教程大家应该安装好了CUDA和cuDNN,下面根据自己的CUDA版本号来找对应的TensorRT的安装包
TensorRT下载链接 Log in | NVIDIA Developer
我电脑上的cuda版本是11.5那么我下载的则是win系统下的TensorRT 8.5 GA,如下图

下载完成后,将该TensorRT文件解压后,如下图所示
在这里插入图片描述

然后需要将TensorRT文件中的文件移动到CUDA安装文件夹中,如下:
将 TensorRT-8.5.1.7\include中头文件 copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\include
将TensorRT-8.5.1.7\lib 中所有lib文件 copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\lib\x64
将TensorRT-8.5.1.7\lib 中所有dll文件copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\bin

5.2 Python下安装TensorRT库
找到刚刚解压的TensorRT文件夹,里面有一个python文件夹,这里面含有不同版本python对应的TensorRT安装

在这里插入图片描述

在python环境中,将目录切换到刚刚解压的TensorRT文件夹,输入pip install tensorrt-8.5.1.7-cp39-none-win_amd64.whl,进行安装即可,根据自己的python版本来定。然后在python下导入tensorrt,看看是否可以正常导入并输出版本号,如下图所示,说明安装成功。

在这里插入图片描述

————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_40716944/article/details/131297563

一些遇到的问题:
报错如下:

在这里插入图片描述

第一种方法:启动VS以管理员身份运行,然后打开项目即可。这种原因是CMAKE_INSTALL_PREFIX设置为C盘,C盘有权限所以有此报错。

第二种方法:

cmake时,设置的build目录不对的原因。如在源码(CMakelist.txt所在目录)主目录的外侧,新建了build的目录。而不是在正确的在主目录下新建这个build目录。

在这里插入图片描述

而不该
在这里插入图片描述

第三种方法:

打开自己项目,右键单击属性进入生成后事件,命令行查看自己路径是不是正确的
在这里插入图片描述

2、去掉BUILD_TESTS、BUILD_DOCS、BUILD_PERF_TESTS、BUILD_EXAMPLES等:

     在search中分别输入test、python、doc、example,把勾选都去掉;

    一般情况下,在上面的configure后,把滚动条拉倒最上方,把下面的几个选项的勾去掉,需要把没有用的选项去掉,之后再点击configure,一般需要点击两次。
;