目录

下载

安装步骤

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 delphi 接口 opencv connect_opencv

安装步骤

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

在bin中打开cmake-gui.exe

opencv delphi 接口 opencv connect_ide_02

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

opencv delphi 接口 opencv connect_opencv delphi 接口_03

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

opencv delphi 接口 opencv connect_opencv delphi 接口_04

 错误一: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 delphi 接口 opencv connect_c++_05

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

 

opencv delphi 接口 opencv connect_ide_06

解决方法:

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

opencv delphi 接口 opencv connect_c++_07

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

opencv delphi 接口 opencv connect_c++_08

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

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

opencv delphi 接口 opencv connect_c++_09

错误三: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 delphi 接口 opencv connect_学习_10

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

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

opencv delphi 接口 opencv connect_学习_11

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

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

勾选以下选项。

opencv delphi 接口 opencv connect_ide_12

opencv delphi 接口 opencv connect_opencv delphi 接口_13

将OPENCV_EXTRA_MODULES_PATH的值设置为<opencv_contrib>/modules。

opencv delphi 接口 opencv connect_ide_14

 然后重新编译。

错误:文件下载失败,按照上面的办法手动下载文件,下载完成之后。在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 delphi 接口 opencv connect_ide_15

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

opencv delphi 接口 opencv connect_c++_16

3、generate

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

opencv delphi 接口 opencv connect_opencv delphi 接口_17

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

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

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

opencv delphi 接口 opencv connect_c++_18

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

opencv delphi 接口 opencv connect_opencv_19

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

opencv delphi 接口 opencv connect_c++_20

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

opencv delphi 接口 opencv connect_c++_21

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

opencv delphi 接口 opencv connect_ide_22

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

opencv delphi 接口 opencv connect_opencv_23

opencv delphi 接口 opencv connect_opencv_24

 

opencv delphi 接口 opencv connect_ide_25

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

创建项目

opencv delphi 接口 opencv connect_opencv_26

opencv delphi 接口 opencv connect_opencv_27

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

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

opencv delphi 接口 opencv connect_学习_28

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

opencv delphi 接口 opencv connect_c++_29

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

opencv delphi 接口 opencv connect_opencv delphi 接口_30

代码测试

注意这里项目要在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();
}