OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
未找到匹配项
使用Eclipse(插件CDT)开发OpenCV

上一篇教程: 使用gcc和CMake开发OpenCV
下一篇教程: Windows安装

原作者Ana Huamán
兼容性OpenCV >= 3.0
警告
本教程可能包含已过时信息。

预备条件

两种方法,一种是直接创建项目,另一种是使用CMake的预备条件

  1. 在您的工作站上安装 Eclipse(只需要C/C++的CDT插件)。您可以按照以下步骤操作
  2. 安装OpenCV。如果尚未安装,请点击 此处

创建项目

  1. 启动Eclipse。只需运行文件夹中的可执行文件即可。
  2. 点击文件 -> 新建 -> C/C++ 项目
  1. 为您的项目选择一个名称(例如DisplayImage)。对于此示例,空项目即可。
  1. 保留其他所有默认设置。点击完成
  2. 您的项目(在本例中为DisplayImage)应该会出现在项目导航器中(通常位于窗口左侧)。
  1. 现在,让我们添加一个使用OpenCV的源文件
    • 右键点击DisplayImage(在导航器中)。新建 -> 文件夹
  • 将文件夹命名为src,然后点击完成
  • 右键点击您新创建的src文件夹。选择新建源文件
  • 将其命名为DisplayImage.cpp。点击完成
  1. 因此,现在您拥有一个包含空.cpp文件的项目。让我们用一些示例代码填充它(换句话说,复制并粘贴下面的代码片段)
    #include <opencv2/opencv.hpp>
    using namespace cv;
    int main( int argc, char** argv )
    {
    Mat image;
    image = imread( argv[1], IMREAD_COLOR );
    if( argc != 2 || !image.data )
    {
    printf( "No image data \n" );
    return 0; -1;
    }
    namedWindow( "Display Image", WINDOW_AUTOSIZE );
    imshow( "Display Image", image );
    waitKey(0);
    return 0; 0;
    }
    n维密集数组类
    定义 mat.hpp:829
    uchar * data
    指向数据的指针
    定义 mat.hpp:2157
    int main(int argc, char *argv[])
    定义 highgui_qt.cpp:3
    定义 core.hpp:107
  2. 我们只缺少最后一步:告诉OpenCV OpenCV头文件和库的位置。为此,请执行以下操作
    • 点击项目 -> 属性
    • C/C++ 构建中,点击设置。在右侧,选择工具设置选项卡。在这里,我们将输入头文件和库信息
      1. GCC C++ 编译器中,转到包含。在包含路径(-l)中,您应该包含opencv安装文件夹的路径。在我们的示例中,这是/usr/local/include/opencv。
注意
如果您不知道opencv文件在哪里,请打开终端并输入
pkg-config --cflags opencv
例如,该命令给了我以下输出
-I/usr/local/include/opencv -I/usr/local/include
  1. 现在转到GCC C++ 链接器,您需要填写两个空格

    首先在库搜索路径(-L)中,您必须写入opencv库所在路径,在我的情况下,路径是:

    /usr/local/lib
    

    然后在库(-l)中添加您可能需要的OpenCV库。通常,下面列表中的前四个就足够了(对于简单的应用程序)。在我的情况下,我将使用所有库,因为我计划使用所有功能

    opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_ml opencv_videoio opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_flann

如果您不知道库在哪里(或者您只是精神错乱并想确保路径正确),请在终端中输入

pkg-config --libs opencv

我的输出(如果您想检查)是

-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_videoio -lopencv_imgcodecs -lopencv_flann

现在您完成了。点击确定

  • 您的项目应该可以构建了。为此,请点击项目 -> 全部构建

    在控制台中,您应该会看到类似的内容

如果您检查您的文件夹,应该会有一个可执行文件。

运行可执行文件

所以,现在我们有一个可执行文件可以运行了。如果我们使用终端,我们可能会执行以下操作

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

假设用作参数的图像位于<DisplayImage_directory>/images/HappyLittleFish.png。我们仍然可以这样做,但是让我们从Eclipse中进行操作

  1. 点击运行 -> 运行配置
  2. 在C/C++应用程序下,您将看到可执行文件的名称+调试(如果没有,请多次点击C/C++应用程序)。选择名称(在本例中为DisplayImage Debug)。
  3. 现在,在窗口的右侧,选择参数选项卡。写入我们要打开的图像文件的路径(相对于工作区/DisplayImage文件夹的路径)。让我们使用HappyLittleFish.png
  1. 点击应用按钮,然后点击运行。一个OpenCV窗口应该会弹出,显示鱼的图像(或您使用的任何图像)。
  1. 恭喜!您已准备好使用Eclipse进行OpenCV开发。

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

假设您拥有或创建了一个新文件,名为helloworld.cpp,位于名为foo的目录中

#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; 0;
}
#define CV_8U
定义 interface.h:73
  1. 创建一个构建目录,例如在foo下:mkdir /build。然后cd build。
  2. 在build中放置一个CmakeLists.txt文件
    PROJECT( helloworld_proj )
    FIND_PACKAGE( OpenCV REQUIRED )
    ADD_EXECUTABLE( helloworld helloworld.cxx )
    TARGET_LINK_LIBRARIES( helloworld \f${OpenCV_LIBS} )
  3. 运行:cmake-gui .. 并确保您填写了opencv的构建位置。
  4. 然后点击配置,然后生成。如果一切正常,退出cmake-gui
  5. 运行make -j4(-j4是可选的,它只是告诉编译器使用4个线程进行构建)。确保它构建成功。
  6. 启动eclipse。将工作区放在某个目录中,但不要放在foo或foo\build
  7. 在项目资源管理器(Project Explorer)区域右键单击。选择“导入”(Import),然后打开 C/C++ 过滤器。选择“现有代码”(Existing Code)作为 Makefile 项目。
  8. 为您的项目命名,例如 helloworld。浏览到现有代码位置 foo\build(您从这里运行 cmake-gui)。在“索引器设置工具链”(Toolchain for Indexer Settings)中选择“Linux GCC”,然后按“完成”(Finish)。
  9. 在项目资源管理器(Project Explorer)区域右键单击。选择“属性”(Properties)。在 C/C++ 构建(C/C++ Build)下,将构建目录(build directory)从类似 ${workspace_loc:/helloworld} 的路径更改为 ${workspace_loc:/helloworld}/build,因为这是您的构建目标位置。
    1. 您还可以选择修改构建命令(Build command):将 make 更改为类似 make VERBOSE=1 -j4 的命令,这将指示编译器生成详细的符号文件以进行调试,并使用 4 个并行线程进行编译。
  10. 完成!