在Windows上构建opencv 3.1 - 我在哪里指定LAPACK库位置?

时间:2016-10-19 14:27:11

标签: opencv build cmake lapack

用于构建opencv 3.1我在Visual Studio 2013中使用cmake。我下载了依赖项,如下所示:http://docs.opencv.org/3.1.0/d3/d52/tutorial_windows_install.html
配置cmake时,它首先显示的是:

FP16: Compiler support is available
A library with BLAS API not found. Please specify library location.
LAPACK requires BLAS
A library with LAPACK API not found. Please specify library location.

问题是,我不知道如何指定位置。对于" Eigen"库我自己设置库路径(EIGEN_INCLUDE_PATH,这是预定义的),cmake说:

Other third-party libraries:
    Use IPP:                     NO
    Use IPP Async:               NO
    Use Lapack:                  NO
    Use Eigen:                   YES (ver 3.2.10)
    Use Cuda:                    NO
    Use OpenCL:                  YES
    Use OpenVX:                  NO
    Use custom HAL:              NO

但LAPACK没有预先定义的变量。我还尝试将* .lib和头文件放在我从http://icl.cs.utk.edu/lapack-for-windows/下载的子目录中,希望如果cmake以某种方式找到库。

我必须自己构建opencv 3.1,因为在分布式版本中,额外的模块被禁用。它建立时没有LAPACK,但我的猜测是,我将失去很多性能。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

对我来说,我使用了OpenBlas库:

使用CMake Gui配置opencv

  • 选择Advanced
  • OpenBLAS组中,为OpenBLAS
  • 配置包含文件夹和库文件
  • WITH群组中,选择WITH_LAPACK
  • 现在点击Configure按钮,CMake将自动配置Lapack信息。
  • 一切正常后,您可以点击CMake Gui上的Generate按钮生成visual studio项目文件并开始构建。

答案 1 :(得分:0)

我会添加评论,但我没有足够的代表。 在我的情况下使用OpenBlasLAPACK在Visual Studio 2013中构建OpenCV 3.2,除了Viets的答案,我还必须更改lapacke.h中的两行以使用基于的标准库here

因此,对于lapacke.h中的OpenBLAS版本0.2.19-Win64-int32我改变了

@line 74 float _Complexstd::complex<float>

@line 90 double _Complexstd::complex<double>

无需再次构建OpenBLAS库。

希望它有所帮助。