2016-08-17 140 views

回答

0

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

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

  1. (可选)为了以防万一,请删除旧的OpenCV安装。如果您遇到重大问题,请删除以前的MinGW,Ant,JDK和CMake安装,并确保您的Windows系统PATH不指向它们......您可能需要从头开始。
  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的,使文件README.md在OpenCV的根文件夹出现在C:\ OpenCV的\ README.md )。
  8. 打开CMake GUI(基本用法,这里是video)。
  9. 设置源代码(在我的情况下为C:/ opencv)和二进制文件构建路径(我喜欢在C:/ opencv/build中执行)。
  10. Press 配置。因为我们使用MinGW选择“MinGW Makefiles”和“使用默认本地编译器”(如果您已经安装了其他MinGW版本,您可能需要检查您的系统PATH以便没有冲突,或者选择“指定native编译器“并手动设置路由)。
  11. 很多红色的东西,第一遍是正常的。对于CMake beta 3.9.0,我不得不取消ENABLE_PRECOMPILED_HEADERS来躲避一些奇怪的错误,但这可能会在将来更改。我想取消选中BUILD_TESTS和BUILD_PERF_TESTS以加快编译速度,但这取决于您的需求。
    • (如果你需要的Java)既然你安装Ant,变量ANT_EXECUTABLE应该已经自动地由CMake的检测,否则,解决这个问题(可能是手动设置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的/建造)并执行命令的mingw32,使-j4其中“-j4”平行线程的数目,我建议尽可能多的为你的CPU数量核心允许最大速度。
  15. 等等。很多。它应该在100%后完成。现在执行mingw32-make install
  16. 我们完成了。在类似于的路径中查找新的二进制文件C:\ opencv \ build \ install \ x86 \ mingw \ bin并且您可能希望将其添加到Windows系统PATH中。

现在,你应该测试你构建的实际工作。打开你的首选IDE,并尝试运行一个简单的OpenCV的HelloWorld项目,显示一个简单的垫子,这样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; 
} 

(建设项目之前,记得设置OpenCV的包括和libs在您的IDE中,在我的情况下“C:\ opencv \ build \ install \ include”以及您在“C:\ opencv \ build \ install \ x86 \ mingw \ lib”中需要的lib文件)

If屏幕上出现一些东西,恭喜!