OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库

目录

下载

安装步骤

1、打开cmake-gui.exe对opencv源码进行编译

 错误一:CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:

错误二:下载ippicv_2020_win_ia32_20191018_general.zip失败,提示SSL connect error或者是Counldn't resolve host name

错误三:opencv_videoio_ffmpeg.dll,opencv_videoio_ffmpeg_64.dll,ffmpeg_version.cmake下载失败。

2、将opencv_contrib中额外的模块添加到opencv中,并根据官方建议设置需要build的部分。

3、generate

4、Vs2019打开OpenCV.sln,生成解决方案(可省略)

5、选择CMakeTargets->INSTLL 右键生成

6、Vs2019创建C++项目并引用opencv库

创建项目

 设置项目的依赖项和引入的库文件

代码测试

 编译好的OpenCV下载


下载

opencv-4.5.5:https://github.com/opencv/opencv/tree/4.5.5

opencv_contrib:https://github.com/opencv/opencv_contrib

cmake:Download | CMake

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第1张图片

安装步骤

1、打开cmake-gui.exe对opencv源码进行编译

在bin中打开cmake-gui.exe

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第2张图片

在opencv文件夹下创建了一个名为“build”文件夹。source code 选择下载的Opencv源码的路径,where to build the binaries选择build文件夹的路径,然后点Configure。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第3张图片

选择Visual Studio 2019,其他的选项默认即可,然后点Finish,等待编译。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第4张图片

 错误一:CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:

CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):
  CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:

  PYTHON_EXECUTABLE=D:/anaconda/anaconda3/python.exe

  PYTHON_VERSION_STRING=3.8.8

  Consider providing the 'PYTHON2_EXECUTABLE' variable via CMake command line
  or environment variables

Call Stack (most recent call first):
  cmake/OpenCVDetectPython.cmake:271 (find_python)
  CMakeLists.txt:627 (include)

因为我需要使用到python3.9,为了防止安装python2之后会有未知的影响,我在anaconda中创建了一个虚拟环境,用于安装python2。然后将PYTHON2_EXECUTABLE变量改为python2的安装路径。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第5张图片

错误二:下载ippicv_2020_win_ia32_20191018_general.zip失败,提示SSL connect error或者是Counldn't resolve host name

 OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第6张图片

解决方法:

1、在build文件夹中打开日志文件:CMakeDownloadLog.txt,找到ippicv_2020_win_ia32_20191018_general.zip文件的下载链接。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第7张图片

2、打开浏览器:GitHub Proxy 代理加速,复制链接到浏览器就可以下载。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第8张图片

3、将下载好的ippicv_2020_win_ia32_20191018_general.zip复制到opencv/3rdparty/ippicv中。

4、修改make文件:打开opecv/3rdparty/ippicv/ippicv.make文件,将ocv_download语句注释掉。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第9张图片

错误三:opencv_videoio_ffmpeg.dll,opencv_videoio_ffmpeg_64.dll,ffmpeg_version.cmake下载失败。

1、在build文件夹中打开日志文件:CMakeDownloadLog.txt,找到opencv_videoio_ffmpeg.dll,opencv_videoio_ffmpeg_64.dll文件的下载链接:

​​​​​​https://raw.githubusercontent.com/opencv/opencv_3rdparty/4d348507d156ec797a88a887cfa7f9129a35afac/ffmpeg/opencv_videoio_ffmpeg.dll

https://raw.githubusercontent.com/opencv/opencv_3rdparty/4d348507d156ec797a88a887cfa7f9129a35afac/ffmpeg/opencv_videoio_ffmpeg_64.dl

在GitHub Proxy 代理加速浏览器中复制上述链接,下载文件,将下载好的文件复制到opencv/3rdparty/ffmpeg中。

2、在日志文件中找到ffmpeg_version.cmke的下载链接:https://raw.githubusercontent.com/opencv/opencv_3rdparty/4d348507d156ec797a88a887cfa7f9129a35afac/ffmpeg/ffmpeg_version.cmakes

在GitHub Proxy 代理加速浏览器中打开却不能下载,而是出现如下的界面:

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第10张图片

这个时候我们需要手动创建文件,在opecv/build/3rdparty创建名为ffmpeg的文件夹,然后在ffmped的文件夹中创建ffmpeg_version.cmake的文件,将上面的内容复制到ffmpeg_version.cmake文件中即可。

3、修改make文件:打开opecv/3rdparty/ffmpeg/ffmpeg.make文件,将一下语句注释掉。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第11张图片

将以上错误修改完成后,点Configure重新编译。

2、将opencv_contrib中额外的模块添加到opencv中,并根据官方建议设置需要build的部分。

勾选以下选项。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第12张图片

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第13张图片

将OPENCV_EXTRA_MODULES_PATH的值设置为/modules。

 然后重新编译。

错误:文件下载失败,按照上面的办法手动下载文件,下载完成之后。在build文件中创建downloads文件夹,在该文件夹中创建wechat_qrcodexfeatures2d两个文件夹。将boostdesc_bgm.iboostdesc_bgm_bi.iboostdesc_bgm_hd.iboostdesc_binboost_064.iboostdesc_binboost_128.iboostdesc_binboost_256.iboostdesc_lbgm.ivgg_generated_48.ivgg_generated_64.ivgg_generated_80.ivgg_generated_120.i放在opencv-4.5.5\build\downloads\xfeatures2d文件夹中,将detect.caffemodeldetect.prototxtsr.caffemodelsr.prototxt放在opencv-4.5.5\build\downloads\wechat_qrcode文件夹中。

修改opencv_contrib-4.x\modules\xfeatures2d\CMakeLists.txt

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第14张图片

修改opencv_contrib-4.x\modules\wechat_qrcode\CMakeLists.txt

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第15张图片

3、generate

在Configure完成,没有错误后,选择Generate。Generating done表示Generate完成,此时在build文件夹中会生成.sln文件。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第16张图片

4、Vs2019打开OpenCV.sln,生成解决方案(可省略)

选择Release版本,选择项目,右击生成

选择CMakeTargets->INSTALL,右键生成解决方案

在opencv-4.5.5\build\bin\Release目录中会生成很多exe文件,找到example_cpp_contours2.exe,双击运行,如下,表示解决方案生成正确。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第17张图片

5、选择CMakeTargets->INSTLL 右键生成

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第18张图片

错误: setloca......已退出,代码为1

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第19张图片

 从网上查了很多办法不无法解决,最终在输出页面发现真正的错误是:

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第20张图片

 在用cmake编译的时候下载过opencv_videoio_ffmpeg_64.dll这个文件,将文件复制到opencv-4.5.5/build/3rdparty/ffmpeg/目录中,之后重新生成,历尽千辛万苦终于成功了。INSTALL完成之后在opencv-4.5.5/build/install目录下是我们需要的lib、dll以及头文件,以下是部分截图。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第21张图片

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第22张图片

 OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第23张图片

6、Vs2019创建C++项目并引用opencv库

创建项目

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第24张图片OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第25张图片

 设置项目的依赖项和引入的库文件

 打开项目->属性,在VC++目录中修改库目录为opencv-4.5.5\build\install\x64\vc16\lib。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第26张图片

 在VC++目录中修改包含目录,将opencv的头文件引入到项目中。

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第27张图片

 将opencv-4.5.5\build\install\x64\vc16\lib文件夹的所有lib文件添加到链接器->输入->附加依赖项中。(如果是opencv是release下编译的,是*.lib,debug下编译的则是*d.lib,要根据项目情况添加,项目是release添加*.lib,项目是debug添加*d.lib)

OpenCV学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库_第28张图片

代码测试

注意这里项目要在release,x64下运行,因为opencv编译时选择的是realease,x64

#include
#include

using namespace cv;
using namespace std;

int main() {
	Mat img = imread("1.jpg");
	imshow("img", img);
	waitKey();
}

 编译好的OpenCV下载

通过源码编译好的OpenCV-4.5.5-图像处理文档类资源-CSDN下载win7系统下编译好的OpenCV-4.5.5,在Vs2019、Realease下编译,头文件和li更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_44077524/85219175

你可能感兴趣的:(OpenCV,opencv,c++,学习)