在windows 7 - '位下编译opencv 3 mingw64

时间:2016-08-17 20:28:03

标签: compilation 64-bit mingw-w64

任何人都可以指出使用Mingw64编译Opencv 3.0以在Java中使用的过程。

您能否指出我与opencv 64bits编译器兼容的版本,因为我尝试了很多版本而且都没有。

例如,TDM-gcc 64位在某些时候崩溃。

1 个答案:

答案 0 :(得分:0)

OpenCV是一个开源的多平台项目,由开发人员(而非最终用户)和计算机视觉科学家开发。虽然默认包含一些预编译的二进制文件(对于Java也是如此),但是如果你遇到问题,你应该自己在你的特定操作系统和硬件中使用你需要的模块构建opencv。

这就是我在我的Windows机器上用MinGW编译OpenCV 3.2的方式(因为我不想安装visual studio)。如果您在没有Java支持的情况下构建,这些说明也适用。

  1. (可选)以防万一,删除任何旧的OpenCV安装。如果您遇到重大问题,还要删除以前的MinGW,Ant,JDK和CMake安装,并确保您的Windows系统路径没有指向它们......您可能希望从头开始。
  2. 下载并安装MinGW(最新版本)。我喜欢在“C:\ MinGW”中安装它。如果您确保系统中没有其他MinGW安装,那么最好没有冲突。
  3. 下载并安装CMake(最新版本,在我的情况下是测试版3.9.0)
  4. 将mingw的bin路径添加到Windows系统PATH;以防万一,这里是basic tutorial on it(在我的情况下,我添加了 C:\ MinGW \ bin )。
    • (如果你需要Java,否则你可以跳过)如果你还没有,请下载并安装JDKAnt(我想在我之后重启安装JDK)。确保将JAVA_HOME Windows系统变量设置为正确的位置,并且Windows系统PATH包含到JDK的“bin”目录的路由。
  5. 重新启动Windows,以便识别路径更改。
  6. 从其github项目页面(https://github.com/opencv/opencv)下载完整的opencv源代码。这是最新的公开版本。如果你不知道如何使用Git,那里有一个“克隆或下载”按钮。
  7. 在易于查找的地方提取opencv的源代码(我喜欢在 C:\ opencv 中执行此操作,以便opencv根文件夹中的文件 README.md 出现在 C:\的OpenCV \ README.md )。
  8. 打开CMake GUI(这是基本用法的video)。
  9. 设置源代码(在我的情况下是 C:/ opencv )和二进制文件构建路径(我喜欢在 C:/ opencv / build 中执行此操作)。
  10. 配置。由于我们正在使用MinGW选择“MinGW Makefiles”和“使用默认本机编译器”(如果您已经安装了其他MinGW版本,您可能需要检查系统PATH以便没有冲突,或者选择“指定本机编译器“并手动设置路由。”
  11. 很多红色的东西,第一遍正常。对于CMake beta 3.9.0,我必须取消选中ENABLE_PRECOMPILED_HEADERS以避免一些奇怪的错误,但这可能在将来发生变化。我想取消选中BUILD_TESTS和BUILD_PERF_TESTS以使编译速度更快,但这取决于您的需求。
    • (如果您需要Java)由于您安装了Ant,因此应该由CMake自动检测变量ANT_EXECUTABLE,否则,修复此问题(可能需要手动设置te路径)。还要检查出现的新BUILD_FAT_JAVA_LIB,它确保创建Java包装器。
    • (如果你需要Java)应该出现一堆带有“JAVA_”前缀的变量;检查它们并在需要时手动设置。这是一个(不那么优雅)的例子,你可以用来指导自己(确保使用你的路径): cmake java vars example
  12. 单击“配置”按钮,直到不再显示红色。然后点击生成。如果一切顺利,最后应该说“cvconfig.h在:C:/ opencv / build,配置完成,生成完成”。现在我们终于可以建立。
  13. 打开你的控制台(cmd;这里是basic tutorial)。
  14. 导航到构建目录( C:/ opencv / build )并执行命令 mingw32-make -j4 ,其中“-j4”是并行线程数,我建议尽可能多的CPU核心数允许最大速度。
  15. 等待。很多。它应该在100%之后完成。
  16. 现在执行 mingw32-make install
  17. 我们完成了。在类似 C:\ opencv \ build \ install \ x86 \ mingw \ bin 的路径中查找新的二进制文件,您可能希望将其添加到Windows系统路径中。
  18. 现在,您应该测试您构建的内容是否真正有效。打开您首选的IDE,并尝试运行一个简单的opencv helloworld项目,它显示一个简单的Mat,就像这个C / C ++代码的等价物一样:

    #include "opencv2/core/core.hpp"
    #include "opencv2/highgui/highgui.hpp"
    using namespace cv;
    
    int main(int argc, char *argv[]) {
        Mat img = Mat::ones(256, 256, CV_8U) * 200;
        imshow("Gray image", img);
        waitKey(0);
        return 0;
    }
    

    (在构建项目之前,记得在IDE中设置opencv includes和libs,在我的例子中设置“C:\ opencv \ build \ install \ include”以及“C:\”中需要的lib文件的OpenCV \建立\安装\ 86 \ MinGW的\ lib中“)

    如果屏幕上出现某些内容,恭喜!