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

content

download

opencv-4.5.5:https://github.com/opencv/opencv/tree/4.5.5[0]

opencv_contrib:https://github.com/opencv/opencv_contrib[0]

cmake:Download | CMake[0]

安装步骤

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

在bin中打开cmake-gui.exe

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

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

 错误一: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的安装路径。

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

Solution:

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

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

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

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

错误三: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[0]

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

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

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

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

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

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

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

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

检查以下选项。

将OPENCV_EXTRA_MODULES_PATH的值设置为/modules。

然后重新编译。

错误:文件下载失败,按照上面的办法手动下载文件,下载完成之后。在build文件中创建downloads文件夹,在该文件夹中创建wechat_qrcode和xfeatures2d两个文件夹。将boostdesc_bgm.i、boostdesc_bgm_bi.i、boostdesc_bgm_hd.i、boostdesc_binboost_064.i、boostdesc_binboost_128.i、boostdesc_binboost_256.i、boostdesc_lbgm.i、vgg_generated_48.i、vgg_generated_64.i、vgg_generated_80.i、vgg_generated_120.i放在opencv-4.5.5\build\downloads\xfeatures2d文件夹中,将detect.caffemodel、detect.prototxt、sr.caffemodel、sr.prototxt放在opencv-4.5.5\build\downloads\wechat_qrcode文件夹中。

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

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

3、generate

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

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

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

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

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

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

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

从网上查了很多方法,都解决不了,最后在输出页面找到了真正的错误:

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

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

创建项目

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

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

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

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

代码测试

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

#include<iostream>
#include<opencv2/opencv.hpp>

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下载频道.OpenCv-C++学习笔记(一):windows7+cmake4.5+Vs2019编译OpenCV4.5.5、使用Vs2091调用编译好的OpenCV库https://download.csdn.net/download/weixin_44077524/85219175[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年5月6日
下一篇 2022年5月6日

相关推荐