Kir*_*.lv 5 windows opencv mingw cmake
一个星期以来,我一直在努力编译openCV程序.我已经尝试过在互联网上可能找到的一切.
我所做的是:我已经下载了OpenCV-2.3.1-win-superpack.exe并遵循了这个官方安装指南.
在CMake(gui)我的源代码是:D:\ opencv和构建目标是:C:\ opencv.
我还将C:\ opencv\install\bin; C:\ opencv\bin添加到我系统的PATH变量中.
我想要的是使用MinGW的gcc/g ++编译器在我的Windows操作系统上编译openCV程序.
我已经尝试了各种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;
}
Run Code Online (Sandbox Code Playgroud)
错误:
输入:
gcc test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin"
Run Code Online (Sandbox Code Playgroud)
输出:
...\ccK4MfHv.o:test.c:(.text+0xa0b): undefined reference to `cvFree_'
Run Code Online (Sandbox Code Playgroud)
或者使用g ++:
输入:
g++ test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin"
Run Code Online (Sandbox Code Playgroud)
输出:
...\ccXCTKa1.o:test.c:(.text+0x1e): undefined reference to `cvNamedWindow'
Run Code Online (Sandbox Code Playgroud)
旁注:尝试在VS2005中编译我得到了同样的错误.
感谢您的时间!
如果其他人需要解决这个问题,这里是我如何使用MinGW,MSYS和CMake在Windows 7 x64中编译发布的OpenCV/HighGUI示例代码:
使用MinGW/MSYS/CMake从源代码构建OpenCV.这是因为我无法在OpenCV-win-SuperPack中获得MinGW编译版本,以便在MinGW/MSYS/Windows 7 x64中正确链接.
如需完整参考,以下是我编译OpenCV的方法:
将以下示例代码放入名为test.c的文件中.我稍微修改了包含,使它们与OpenCV v2.2及更高版本兼容.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <opencv/cv.h>
#include <opencv/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;
}
Run Code Online (Sandbox Code Playgroud)在MSYS终端中,浏览到放置test.c的文件夹,然后运行:
gcc -o test -I"[OPENCV_BUILD_DIR]/install/include" test.c \
-L"[OPENCV_BUILD_DIR]/install/lib" \
-lopencv_core[OPENCV_VERSION] \
-lopencv_imgproc[OPENCV_VERSION] \
-lopencv_highgui[OPENCV_VERSION]
Run Code Online (Sandbox Code Playgroud)
所以在我的情况下:
gcc -o test -I"/c/opencv/build/mingw/install/include" test.c \
-L"/c/opencv/build/mingw/install/lib" \
-lopencv_core231
-lopencv_imgproc231
-lopencv_highgui231
Run Code Online (Sandbox Code Playgroud)路径编辑器:http://www.redfernplace.com/software-projects/patheditor/
您可以使用目录来在/命令行C:\opencv\install\bin上查找库,但我认为您还需要指定用作链接器输入的库。我不确定 OpenCV 发行版中包含哪些库,但根据您链接到的说明页面上的示例,其中一个可能是:gccg++
-lopencv_calib3d220.dll
Run Code Online (Sandbox Code Playgroud)
您可能需要添加一个或多个其他目录(遵循目录lib*.a中的名称模式 - 或者您应该在选项中传递的C:\opencv\install\bin其他目录)。lib-L
| 归档时间: |
|
| 查看次数: |
10478 次 |
| 最近记录: |