0

我正在尝试在 OS X 10.8 中使用 Eclipse 构建以下示例:

//============================================================================

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    if( argc != 2)
    {
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

    Mat image;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file

    if(! image.data )                              // Check for invalid input
    {
        cout <<  "Could not open or find the image" << std::endl ;
        return -1;
    }

    namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
    imshow( "Display window", image );                   // Show our image inside it.

    waitKey(0);                                          // Wait for a keystroke in the window
    return 0;
}

但得到这个结果:

**** Build of configuration Debug for project cvTesting ****

make all 
Building file: ../src/cvTesting.cpp
Invoking: GCC C++ Compiler
g++ -I/opt/local/include/opencv -I/opt/local/include/opencv2 -I/opt/local/include/opencv2/core/ -        I/opt/local/include/opencv2/highgui/ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/cvTesting.d"     -MT"src/cvTesting.d" -o "src/cvTesting.o" "../src/cvTesting.cpp"
../src/cvTesting.cpp:9:33: warning: opencv2/core/core.hpp: No such file or directory
../src/cvTesting.cpp:10:39: warning: opencv2/highgui/highgui.hpp: No such file or directory
../src/cvTesting.cpp:13: error: 'cv' is not a namespace-name
../src/cvTesting.cpp:13: error: expected namespace-name before ';' token
../src/cvTesting.cpp: In function 'int main(int, char**)':
../src/cvTesting.cpp:24: error: 'Mat' was not declared in this scope
../src/cvTesting.cpp:24: error: expected `;' before 'image'
../src/cvTesting.cpp:25: error: 'image' was not declared in this scope
../src/cvTesting.cpp:25: error: 'CV_LOAD_IMAGE_COLOR' was not declared in this scope
../src/cvTesting.cpp:25: error: 'imread' was not declared in this scope
../src/cvTesting.cpp:33: error: 'CV_WINDOW_AUTOSIZE' was not declared in this scope
../src/cvTesting.cpp:33: error: 'namedWindow' was not declared in this scope
../src/cvTesting.cpp:34: error: 'imshow' was not declared in this scope
../src/cvTesting.cpp:36: error: 'waitKey' was not declared in this scope
make: *** [src/cvTesting.o] Error 1

**** Build Finished ****

我已经安装了 opencv,以便 pkg-config 报告以下内容:

$ pkg-config opencv --cflags

-I/opt/local/include/opencv -I/opt/local/include

$ pkg-config --libs opencv

/opt/local/lib/libopencv_calib3d.dylib /opt/local/lib/libopencv_contrib.dylib /opt/local/lib/libopencv_core.dylib /opt/local/lib/libopencv_features2d.dylib /opt/local/lib/libopencv_flann.dylib /opt/local/lib/libopencv_gpu.dylib /opt/local/lib/libopencv_highgui.dylib /opt/local/lib/libopencv_imgproc.dylib /opt/local/lib/libopencv_legacy.dylib /opt/local/lib/libopencv_ml.dylib /opt/local/lib/libopencv_nonfree.dylib /opt/local/lib/libopencv_objdetect.dylib /opt/local/lib/libopencv_photo.dylib /opt/local/lib/libopencv_stitching.dylib /opt/local/lib/libopencv_ts.dylib /opt/local/lib/libopencv_video.dylib /opt/local/lib/libopencv_videostab.dylib

在 Eclipse 中,在我拥有的项目属性中,C/C++ Build -> Settings -> GCC C++ Compiler "All options" 设置为:

-I/opt/local/include/opencv -I/opt/local/include/opencv2 -O0 -g3 -Wall -c -fmessage-length=0

并且 C/C++ Build -> Settings -> MacOS X C++ Linker -> "All options" 设置为:-L/opt/local/lib

我还在 C/C++ Build -> Settings -> MacOS X C++ Linker -> Libraries 中列出了以下库 (-l):

opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann

我可以在 Ubuntu 中构建相同的示例,而不是在 OS X 中。任何人都可以帮助解释 Eclipse 在 OS X 中使用的路径的设置,用于 opencv 吗?

4

2 回答 2

0

正如您在编译器输出中看到的:

../src/cvTesting.cpp:9:33:警告:opencv2/core/core.hpp:没有这样的文件或目录
../src/cvTesting.cpp:10:39:警告:opencv2/highgui/highgui.hpp : 没有这样的文件或目录

Eclipse 找不到 core.hpp 和 highgui.hpp 文件。您确定这些文件位于这些位置吗?

您也可以尝试使用core.handhighgui.h而不是*.hpp文件。

于 2013-04-08T06:36:04.070 回答
0

在对该主题进行了更多研究并通过各种选择之后,我发现在 OS X 中使用 Xcode 而不是 Eclipse 作为 IDE 的最佳方法。

我用来设置 Xcode 并正常工作的信息在此处发布的答案中:

使用 Xcode 为 OS X Lion / Mountain Lion 编译 OpenCV (2.3.1+)

不过,在此之前,我回顾了此处找到的 Mac OS X OpenCV 端口说明:http: //opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port

希望这可以帮助其他尝试在 OS X 中将 OpenCV 与现代 IDE 一起使用...

-沃尔特

于 2013-04-09T04:42:28.393 回答