OpenCV是一个开源的多平台项目,由开发人员(而非最终用户)和计算机视觉科学家开发。虽然默认包含一些预编译的二进制文件(对于Java也是如此),但是如果你遇到问题,你应该自己在你的特定操作系统和硬件中使用你需要的模块构建opencv。
这就是我在我的Windows机器上用MinGW编译OpenCV 3.2的方式(因为我不想安装visual studio)。如果您在没有Java支持的情况下构建,这些说明也适用。
- (可选)以防万一,删除任何旧的OpenCV安装。如果您遇到重大问题,还要删除以前的MinGW,Ant,JDK和CMake安装,并确保您的Windows系统路径没有指向它们......您可能希望从头开始。
- 下载并安装MinGW(最新版本)。我喜欢在“C:\ MinGW”中安装它。如果您确保系统中没有其他MinGW安装,那么最好没有冲突。
- 下载并安装CMake(最新版本,在我的情况下是测试版3.9.0)
- 将mingw的bin路径添加到Windows系统PATH;以防万一,这里是basic tutorial on it(在我的情况下,我添加了 C:\ MinGW \ bin )。
- (如果你需要Java,否则你可以跳过)如果你还没有,请下载并安装JDK和Ant(我想在我之后重启安装JDK)。确保将JAVA_HOME Windows系统变量设置为正确的位置,并且Windows系统PATH包含到JDK的“bin”目录的路由。
- 重新启动Windows,以便识别路径更改。
- 从其github项目页面(https://github.com/opencv/opencv)下载完整的opencv源代码。这是最新的公开版本。如果你不知道如何使用Git,那里有一个“克隆或下载”按钮。
- 在易于查找的地方提取opencv的源代码(我喜欢在 C:\ opencv 中执行此操作,以便opencv根文件夹中的文件 README.md 出现在 C:\的OpenCV \ README.md )。
- 打开CMake GUI(这是基本用法的video)。
- 设置源代码(在我的情况下是 C:/ opencv )和二进制文件构建路径(我喜欢在 C:/ opencv / build 中执行此操作)。
- 按配置。由于我们正在使用MinGW选择“MinGW Makefiles”和“使用默认本机编译器”(如果您已经安装了其他MinGW版本,您可能需要检查系统PATH以便没有冲突,或者选择“指定本机编译器“并手动设置路由。”
- 很多红色的东西,第一遍正常。对于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_”前缀的变量;检查它们并在需要时手动设置。这是一个(不那么优雅)的例子,你可以用来指导自己(确保使用你的路径):
- 单击“配置”按钮,直到不再显示红色。然后点击生成。如果一切顺利,最后应该说“cvconfig.h在:C:/ opencv / build,配置完成,生成完成”。现在我们终于可以建立。
- 打开你的控制台(cmd;这里是basic tutorial)。
- 导航到构建目录( C:/ opencv / build )并执行命令 mingw32-make -j4 ,其中“-j4”是并行线程数,我建议尽可能多的CPU核心数允许最大速度。
- 等待。很多。它应该在100%之后完成。
- 现在执行 mingw32-make install 。
- 我们完成了。在类似 C:\ opencv \ build \ install \ x86 \ mingw \ bin 的路径中查找新的二进制文件,您可能希望将其添加到Windows系统路径中。
醇>
现在,您应该测试您构建的内容是否真正有效。打开您首选的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中“)
如果屏幕上出现某些内容,恭喜!