通过Eclipse(CDT)使用OpenCV

时间:2023-01-24 20:17:37

通过Eclipse(CDT)使用OpenCV

先决条件

两种方式,一个直接构成一个项目,另一个通过CMake的条件决定。

  1. 在你的工作电脑中安装Eclipse。(仅需要安装C/C++所需的CDT插件)。你可以根据下面的步骤来做。
  2. 安装OpenCV,如果还没有请看这里

制作一个项目

  1. 启动Eclipse。只需要运行目录里面的可执行文件就可以了。
  2. 选择File->New->C/C++ Project
    通过Eclipse(CDT)使用OpenCV
  3. 选择适合你的项目名称(例如:DisplayImage)。Empty Project应该是一个比较好的例子。
    通过Eclipse(CDT)使用OpenCV
  4. 其他选项全部使用默认。接下来按完成
  5. 你的项目(目前是DisplayImage)应当出现在Project Navigator里面(通常在窗口的左侧)。
    通过Eclipse(CDT)使用OpenCV
  6. 现在使用OpenCV,添加一个源码文件:
    • 鼠标右键点击DisplayImage(在Navigator里)。New->Folder
      通过Eclipse(CDT)使用OpenCV
    • 目录名称命名为src并且点击Finish
    • 右键点击你刚刚新建的src目录。选择New Source file
    • 源码文件命名为DisplayImage.cpp。点击Finish
      通过Eclipse(CDT)使用OpenCV
  7. 到现在你的空项目里已经有了一个.cpp文件了。来填入一下简单的代码(换句话说就是拷贝和粘贴下面的偏大)。


    #include <stdio.h>


    #include <opencv2/opencv.hpp>

    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", WINDOW_AUTOSIZE );
    imshow( "Display Image", image );
    waitKey(0);
    return 0;
    }
  8. 我们唯独缺少最后的步骤:告诉OpenCV它的头文件和库在什么位置。使用如下的操作:

    • 选择Project->Properties
    • C/C++ Build里点击Settings。在右侧选择Tool Settings标签。这里我们将开始填写进入头文件和库的信息:
      • 展开GCC C++ Compiler,进入Include。在Include paths(-l)里你应当添加OpenCV被安装的路径。我们里的例子是/usr/local/include/。
        通过Eclipse(CDT)使用OpenCV

        注意:
        如果你不知道你的OpenCV文件在那里,打开桌面终端:

        pkg-config --cflags opencv

        例如命令会给出如下输出:

        -I/usr/local/include/opencv -I/usr/local/include

      • 现在我们进入GCC C++ Linker,这里你需要填写两个位置:
        首先进入Library search path (-L)你需要填写opencv库的路径,我的路径是:
        /usr/local/lib
        在Libraries(-l)里添加你需要的OpenCV的库。通常前四个就足够是使用了(简单的应用程序)。 在我的例子中。我放去了所有的库因为我计划是全部使用。
        opencv_calib3d 、opencv_contrib 、opencv_core 、opencv_features2d 、opencv_flann、opencv_gpu、opencv_highgui、opencv_imgproc、opencv_legacy、opencv_ml、opencv_nonfree、opencv_objdetect、opencv_ocl、opencv_photo、opencv_stitching、opencv_superres、opencv_video、opencv_videostab
        通过Eclipse(CDT)使用OpenCV
        如果你不知道你的库在什么位置(或者你忘记了想去去人一下路径下是否存在这些文件),进入终端:

        pkg-config --libs opencv

        我们的输出可能是这些:

        -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lrt -lpthread -lm -ldl

        现在完成了,点击OK
    • 你的项目应当真的被编译。例如:选择Project->Build all
      你的Eclise Console应当得到如下信息:
      通过Eclipse(CDT)使用OpenCV

      如果你进入你的文件夹里去检测,应该可以发现一个可执行文件。

运行可执行程序

所以现在我们有一个可执行程序准备去运行。如果我们就会这样使用:

cd <DisplayImage_directory>
cd src
./DisplayImage ../images/HappyLittleFish.png

假设需要作为参数使用的图片路径为/images/HappyLittleFish.png我们依旧可以这样做,但要让Eclipse做呢?

  1. 选择 Run->Run Configurations
  2. 在C/C++ Application下面你将发现你的可执行程序名+ Debug(如果没有,就在C/C++ Application上点击几次)。选择名称(例子里选择DisplayImage Debug)。
  3. 现在,在窗口右侧,选择Arguments标签。填写你将要打开的文件路径(相对路径是workspace/DisplayImage文件夹)使用HappyLittleFish.png。
    通过Eclipse(CDT)使用OpenCV
  4. 点击Apply按钮并运行。一个带有鱼图片的OpenCV窗口就被弹出了。
    但如果提示“cannot open shared object file:”。你则需要在你的/etc/ld.so.conf文件中添加“/usr/local/lib”,然后运行ldconfig。
  5. 祝贺你,你的Eclipse已经具备使用OpenCV的功能了。

方式2:在Eclipse中使用CMake + OpenCV

假如你在foo目录创建了一个helloworld.cpp的新文件:

#include <opencv2/opencv.hpp>
using namespace cv;
int main ( int argc, char **argv )
{
Mat img(480, 640, CV_8U);
putText(img, "Hello World!", Point( 200, 400 ), FONT_HERSHEY_SIMPLEX | FONT_ITALIC, 1.0, Scalar( 255, 255, 0 ));
imshow("My Window", img);
waitKey();
return 0;
}
  1. 在foo目录下创建一个build目录:mkdir build,然后进入build目录。
  2. 在foo目录放入一个CmakeLists.txt文件:

    PROJECT( helloworld_proj )
    FIND_PACKAGE( OpenCV REQUIRED )
    ADD_EXECUTABLE( helloworld helloworld.cpp )
    TARGET_LINK_LIBRARIES( helloworld ${OpenCV_LIBS} )
  3. 运行:cmake-gui…并且确认编译出的opencv被放到这里。
  4. 点击Configure和Generate,如果提示完成,就可以退出cmake-gui了。
    通过Eclipse(CDT)使用OpenCV
  5. 在build目录运行 make -j4(-j4这个选项,它是告诉编译编译的时候使用4个线程).确认被编译。
  6. 启动Eclipse。workspace目录不会要foo/build目录。
  7. 将刚才的foo目录导入Eclipse File->Import…,展开C/C++项,选择Existing Code as Makefile Project
    通过Eclipse(CDT)使用OpenCV
  8. 选择你的项目位置,这里需要选择到foo/build路径。项目名称可以填写为hellowrold。Toolchain for Indexer Settings里面选择Linux GCC然后点击Finish

    通过Eclipse(CDT)使用OpenCV

  9. 右键点击Project Explorer里的helloworld项目。选择Properties选项,然后选中C/C++Build,修改Build directory内容,修改为你实际使用的目录。
    通过Eclipse(CDT)使用OpenCV
    你还可以修改编译选项:例如make VERBOSE=1 -j4,就是告诉编译器,编译出Debug时使用的详细的符号文件,和编译器使用4线程。
  10. 完成。

出处:http://docs.opencv.org/master/d7/d16/tutorial_linux_eclipse.html