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

安装步骤

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

 

解决方法:

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

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

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

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 代理加速浏览器中打开却不能下载,而是出现如下的界面:

这个时候我们需要手动创建文件,在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的值设置为<opencv_contrib>/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_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下载频道.https://download.csdn.net/download/weixin_44077524/85219175

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值