文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

提示

两种方式, 一种是直接构建项目, 另外一种是使用CMake

前期准备

  1. 在你的工作电脑上已经安装 Eclipse (仅需要安装编写C/C++用的 CDT 插件即可). 你可以按照如下步骤:
  2. 已经安装OpenCV. 如果没有,跳转到 这里.

创建一个项目

  1. 启动Eclipse. 在下载的目录中运行可执行的文件.

  2. 点击菜单栏中的文件-->添加-->C/C++项目.

    Eclipse Tutorial Screenshot 0

  3. 为你的项目选择一个名字 (例如 DisplayImage). 在这个示例中一个 空项目 应该就可以创建了.

    Eclipse Tutorial Screenshot 1

  4. 让一切都保持默认,然后点击完成

  5. 你的项目 (在这里叫 DisplayImage) 应该出现在 项目导航栏 (通常情况下在窗口的左侧).

    Eclipse Tutorial Screenshot 3

  6. 现在, 我们使用OpenCV来新建一个源文件:

    • 在 DisplayImage (在导航窗口内)上右击. 新增 -> 文件夹 .
      Eclipse Tutorial Screenshot 4

    • 将新加的文件夹命名为src, 然后点击 完成

    • 在新加的 src 目录上右击. 选择 创建源文件:

    • 我们叫它DisplayImage.cpp. 然后点击 完成Eclipse Tutorial Screenshot 7

  7. 现在, 你有一个项目,它包含一个空的.cpp文件. 让我们在内部添加一些示例代码(换句话说, 就是复制并粘贴下面的代码片段):

    #include <cv.h>
    #include <highgui.h>
    
    using namespace cv;
    
    int main( int argc, char** argv )
    {
      Mat image;
      image = imread( argv[1], 1 );
    
      if( argc != 2 || !image.data )
        {
          printf( "No image data \n" );
          return -1;
        }
    
      namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
      imshow( "Display Image", image );
    
      waitKey(0);
    
      return 0;
    }
    
  8. 现在我们就只缺少最后一步了: 告诉OpenCV,它 的头文件与库位置在哪里. 在这里, 执行如下步骤:

    如果你检查了你的文件夹, 那里应该有一个可执行文件.

    • 跳转到菜单栏 项目–>属性

    • C/C++ 构建中, 点击 设置. 在右边, 选中 工具设置 选项卡. 在这里,我们将设置头与库文件的信息:

       

      1. 在 GCC C++ 编译器中, 跳转到 Includes. 在 引用目录(-l) 处,需要包含opencv的安装路径. 在这个例子中, 是 /usr/local/include/opencv.

        Eclipse Tutorial Screenshot 9

        提示

        如果你不知道opencv的文件在哪里, 打开 终端 然后输入:

        pkg-config --cflags opencv
        

        执行后, 这个命令将会给我们如下输出:

        -I/usr/local/include/opencv -I/usr/local/include
        
      2. 现在跳转到GCC C++ 链接器,你需要在两处设置:

        首先在 库搜索路径 (-L) ,你需要指定opencv 库的安装路径,对我来说, 我的路径是:

        /usr/local/lib
        

        然后在 库(-l)中 添加你可能需要的 OpenCV 库. 通常列表中的头3项已经足够(对简单的应用程序来说) . 对我来说, 当我打算使用它所有的功能时,我就把它们全都加进去了:

        opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann

        Eclipse Tutorial Screenshot 10

        如果你不知道你的库在哪里 (或者刚刚你头脑短路,并且需要确保路径是正确的), 在 终端输入:

        pkg-config --libs opencv
        

        我的输出是 (在这里你需要检查一下) : .. code-block:: bash

        -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

        现在完成后,点击 确定

      你的项目应该准备好可以构建. 那么,就就跳转到 项目->构建所有

      在控制台你将会看到类似的

      Eclipse Tutorial Screenshot 12

      如果检查你的文件夹, 那里应该生成了一个可执行文件.

    第 1 段(可获 2 积分)

    运行可执行文件

    所以, 现在我们有一个可执行文件. 如果我们使用终端操作, 那我们需要做一些如下的事情:

    cd <DisplayImage目录>
    cd src
    ./DisplayImage ../images/HappyLittleFish.png
    

    假如做为参数的文件存放于<DisplayImage_directory>/images/HappyLittleFish.png. 我们仍然可以使用上面的命令, 但是让我们在Eclipse中来配置:

    1. 跳转到 运行->运行配置

    2. 在 C/C++ 应用程序下边,你将会看到可执行文件名 + Debug (如果没有, 多点几下展开 C/C++应用程序). 选择这个名字(在这里叫 DisplayImage Debug).

    3. 现在, 在窗口右侧, 选择 Arguments 选项卡. 填入我们想打开的图片路径 (相对于 workspace/DisplayImage 文件夹路径). 让我们用 HappyLittleFish.png:
      Eclipse Tutorial Screenshot 14

    4. 点击 Apply 按钮然后再运行. 一个OpenCV 窗口 将会弹出,内部有一张鱼的图片 (或者显示你的那张图片内容).

      Eclipse Tutorial Screenshot 15
    5. 祝贺你! 你可以使用Eclipse,尽情的开发OpenCV应用程序了.

    第 2 段(可获 2 积分)

    V2: 使用 CMake+OpenCV with Eclipse (CDT插件)

    在 foo 目录中创建一个新文件 helloworld.cpp :

    #include <cv.h>
    #include <highgui.h>
    int main ( int argc, char **argv )
    {
      cvNamedWindow( "My Window", 1 );
      IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
      CvFont font;
      double hScale = 1.0;
      double vScale = 1.0;
      int lineWidth = 1;
      cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,
                  hScale, vScale, 0, lineWidth );
      cvPutText( img, "Hello World!", cvPoint( 200, 400 ), &font,
                 cvScalar( 255, 255, 0 ) );
      cvShowImage( "My Window", img );
      cvWaitKey();
      return 0;
    }
    
    第 3 段(可获 2 积分)
    1. 在 foo 下创建子目录 build,然后进入该目录
    2. 在目录中放置文件 CmakeLists.txt 内容如下:
    PROJECT( helloworld_proj )
    FIND_PACKAGE( OpenCV REQUIRED )
    ADD_EXECUTABLE( helloworld helloworld.cxx )
    TARGET_LINK_LIBRARIES( helloworld ${OpenCV_LIBS} )
    
    1. 运行: cmake-gui .. 然后确保输入 opencv 构建的路径
    2. 然后点击 configure ,紧接着点击 generate. 如果成功的话就退出 cmake-gui
    3. 运行 make -j4 (the ``-j4`` 是可选的,只是告诉编译器用 4 个线程来并行编译). 确保构建成
    4. 启动 eclipse . 让 workspace 放在相同目录下,但不要放到 foo 目录中
    5. 在项目浏览器中右键,选择导入然后打开 C/C++ 选项,选择 Existing Code as a Makefile Project``
    6. 为你的项目起个名字,例如 helloworld. 指向已经存在的代码路径 foo\\build (这就是你之前运行 cmake-gui 的地方). 在 “Toolchain for Indexer Settings” 上选择 Linux GCC ,然后点击 Finish.
    7. 在项目浏览器中右键选择 Properties. 在 C/C++ Build 中设置构建目录,例如从 ${workspace_loc:/helloworld} 到 ${workspace_loc:/helloworld}/build 这是我们要构建的目标地址
    第 4 段(可获 2 积分)
    1. 你也可以修改构建命令,例如改为 make VERBOSE=1 -j4 ,告诉编译器生成详细的符号文件方便用于调试,然后使用 4 个并行线程进行编译
    2. 搞定!
    第 5 段(可获 2 积分)

    文章评论