使用MinGW-gcc/g+编译openCV 2.3.1程序+;在Windows 7上64位

使用MinGW-gcc/g+编译openCV 2.3.1程序+;在Windows 7上64位,windows,opencv,cmake,mingw,Windows,Opencv,Cmake,Mingw,一周来,我一直在努力编译openCV程序。我已经尝试了在互联网上能找到的一切 我所做的是:我下载并遵循 在CMake(gui)中,我的源代码是:D:\opencv,构建目标是:C:\opencv 我还添加了C:\opencv\install\bin;C:\opencv\bin到我的系统的PATH变量 我想要的是使用MinGW的gcc/g++编译器在我的Windows操作系统上编译openCV程序 我尝试了在internet上找到的各种gcc/g++参数,并且每天都在使用-I和-L选项,编译器永远

一周来,我一直在努力编译openCV程序。我已经尝试了在互联网上能找到的一切

我所做的是:我下载并遵循

在CMake(gui)中,我的源代码是:D:\opencv,构建目标是:C:\opencv

我还添加了C:\opencv\install\bin;C:\opencv\bin到我的系统的PATH变量

我想要的是使用MinGW的gcc/g++编译器在我的Windows操作系统上编译openCV程序

我尝试了在internet上找到的各种gcc/g++参数,并且每天都在使用-I和-L选项,编译器永远找不到openCV函数或结构

我试图编译的内容:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>

int main(int argc, char *argv[])
{
  // Nothing but create a window
  cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
  cvMoveWindow("mainWin", 100, 100);
  cvWaitKey(0);
  return 0;
}
输出:

或使用g++:

输入:

输出:

旁注:尝试在VS2005中编译时,我会遇到相同的错误


谢谢你抽出时间

您有目录
C:\opencv\install\bin
,可以在
gcc
/
g++
命令行上找到库,但我认为您还需要指定用作链接器输入的库。我不确定哪些库是OpenCV发行版的一部分,但根据您链接到的说明页面上的示例,其中一个可能是:

 -lopencv_calib3d220.dll

您可能需要添加一个或多个其他目录(遵循
C:\opencv\install\bin
目录中的名称模式
lib*.a
,或者您应该传递
-L
选项的其他
lib
目录)。

如果其他人需要解决此问题,下面是我如何获得发布的OpenCV/HighGUI示例代码,以便使用MinGW、MSYS和CMake在Windows 7 x64中编译:

  • 使用MinGW/MSYS/CMake从源代码构建OpenCV。这是因为我无法使OpenCV win SuperPack中的MinGW编译版本在MinGW/MSYS/Windows 7 x64中正确链接

    以下是我如何编译OpenCV的完整参考:

    • 确保安装了最新的CMake(v2.6或更高版本)和MinGW(带有GCC、G++和MSYS选项)
    • 如果您想要新的基于Qt的OpenCV HighGUI前端,则需要安装Qt 4(SDK)
    • 下载OpenCV源代码/superpack版本2.2或更高版本(我使用了OpenCV-2.3.1-win-superpack.exe)
    • 将内容解压缩到[OPENCV\u SOURCE\u DIR](我将其放在C:/OPENCV中,因此在C:/OPENCV/README中应该有一个文件)
    • 在别处创建一个[OPENCV\u BUILD\u DIR]目录(我使用C:/OPENCV/BUILD/mingw)
    • 使用CMake GUI工具,将源目录指定为[OPENCV_source_DIR],将生成目录指定为[OPENCV_build_DIR],然后单击“配置”
    • 您可能希望/需要调整选项(例如,我勾选“Qt”和“Qt OpenGL”条目,然后再次单击“配置”,然后必须提供qmake可执行文件的路径)
    • 完成OpenCV配置后,单击“生成”
    • 在MSYS终端中,浏览到[OPENCV_BUILD_DIR],然后运行“make”来生成代码(这可能需要一段时间)
    • 正确构建后,运行“make install”,它会将构建的代码/库/include DIR收集到[OPENCV_BUILD_DIR]/install文件夹(如果您在使用CMake GUI工具时更改了相应的选项,则可以使用其他文件夹)
    • 将[OPENCV\u BUILD\u DIR]/install/bin文件夹添加到PATH环境变量。如果您不知道如何做到这一点,那么我建议使用路径编辑器GUI工具
    • 如果最终使用Qt,还需要将Qt SDK的bin文件夹放在PATH环境变量中。这是包含qmake.exe的文件夹
  • 将以下示例代码放入名为test.c的文件中。我稍微修改了include,使其与OpenCV v2.2及更高版本兼容

    #包括
    #包括
    #包括
    #包括
    #包括
    int main(int argc,char*argv[])
    {
    //只创建一个窗口
    cvNamedWindow(“mainWin”,CV_窗口_自动调整大小);
    cvMoveWindow(“mainWin”,100100);
    cvWaitKey(0);
    返回0;
    } 
    
  • 在MSYS终端中,浏览到放置test.c的文件夹,然后运行:

    gcc-o test-I“[OPENCV\u BUILD\u DIR]/install/include”test.c\
    -L“[OPENCV\u BUILD\u DIR]/install/lib”\
    -lopencv_core[OPENCV_版本]\
    -lopencv_imgproc[OPENCV_版本]\
    -lopencv_highgui[OPENCV_版本]
    
    就我而言:

    gcc-o测试-I”/c/opencv/build/mingw/install/include“test.c\
    -L“/c/opencv/build/mingw/install/lib”\
    -洛彭茨瓦努科雷231
    -lopencv_imgproc231
    -lopencv_highgui231
    

  • 路径编辑器:

    很抱歉耽搁了。我什么都试过了,但仍然无法编译。我已经转向Python而不是C/C++了,现在一切都正常了。谢谢你的建议!Linux用户须知。在您的repo中可能会找到新版本的OpenCV,可能不需要下载源代码并制作它们。我的编译命令如下:
    gcc main.c-lopencv\u core-lopencv\u imgproc-lopencv\u highgui-lm
    。如您所见,不需要尾随数字。缺少Ome步骤:在CMake中,配置期间应选择什么?MSYS生成文件?MinGW Makefiles?
    ...\ccK4MfHv.o:test.c:(.text+0xa0b): undefined reference to `cvFree_'
    
    g++ test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin"
    
    ...\ccXCTKa1.o:test.c:(.text+0x1e): undefined reference to `cvNamedWindow'
    
     -lopencv_calib3d220.dll