将 OpenCV 与 Eclipse 一起使用(插件 CDT)

发布时间:2024年01月11日

先决条件

两种方式,一种是直接形成项目,另一种是 CMake 先决条件

  1. 在您的工作站中安装了?Eclipse(只需要 C/C++ 的 CDT 插件)。您可以按照以下步骤操作:
  2. 已安装 OpenCV。如果还没有,请转到此处

制作项目

  1. 启动 Eclipse。只需运行文件夹中的可执行文件即可。
  2. 转到文件 ->?新建 -> C/C++ 项目

    a0.png

  3. 为您的项目选择一个名称(即 DisplayImage)。对于此示例,空项目应该没问题。

    a1.png

  4. 默认情况下保留其他所有内容。按?Finish(完成)。
  5. 您的项目(在本例中为 DisplayImage)应显示在“项目导航器”(通常位于窗口的左侧)中。

    a3.png

  6. 现在,让我们使用 OpenCV 添加一个源文件:
    • 右键单击?DisplayImage(在导航器中)。新建 -> 文件夹?。

      a4.png

    • 将文件夹命名为?src,然后点击完成
    • 右键单击新创建的?src?文件夹。选择?New source file
    • 将其命名为?DisplayImage.cpp。命中完成

      a7.png

  7. 因此,现在您有一个包含空 .cpp 文件的项目。让我们用一些示例代码填充它(换句话说,复制并粘贴下面的代码片段):
    #include < opencv2/opencv.hpp>
    使用命名空间 CV;
    int main( int argc, char** argv )
    {
    垫子图像;
    图像 = imread( argv[1], IMREAD_COLOR );
    if( argc != 2 || !image.数据 )
    {
    printf( “无图像数据 \n” );
    返回 -1;
    }
    namedWindow“显示图像”WINDOW_AUTOSIZE );
    imshow“显示图像”, 图像 );
    waitKey(0);
    返回 0;
    }
  8. 我们只缺少最后一步:告诉 OpenCV OpenCV 头文件和库在哪里。为此,请执行以下操作:
    • 转到“项目”–>属性
    • 在?C/C++ Build?中,单击“设置”。在右侧,选择“工具设置”选项卡。在这里,我们将输入标头和库信息:
      1. 在?GCC C++ 编译器中,转到包含。在?Include paths(-l)?中,您应该包括安装 opencv 的文件夹的路径。在我们的示例中,这是 /usr/local/include/opencv。

        a9.png

        注意

        如果您不知道 opencv 文件的位置,请打开终端并键入:
        pkg-config --cflags opencv
        例如,该命令给了我以下输出:
        -I/usr/local/include/opencv -I/usr/local/include
      2. 现在转到GCC C++链接器,在那里你必须填写两个空格:

        首先,在库搜索路径(-L)中,您必须将路径写入opencv库所在的位置,在我的例子中,路径是:

        <span style="background-color:#fbfcfd">/usr/local/lib
        </span>

        然后在?Libraries(-l)?中添加您可能需要的 OpenCV 库。通常只有下面列表中的 4 个就足够了(对于简单的应用程序)。就我而言,我把它们都放进去,因为我打算使用整个一堆:

        opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_ml opencv_videoio opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_flann

        a10.png

        如果您不知道您的库在哪里(或者您只是精神病患者,想确保路径正常),请输入终端

        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

        现在你完成了。单击“确定

  • 您的项目应该已准备好进行构建。为此,请转到?Project->Build all

    在控制台中,您应该会得到类似以下内容

    a12.png

    如果您签入文件夹,那里应该有一个可执行文件。

运行可执行文件

所以,现在我们有一个可执行文件可以运行了。如果我们要使用终端,我们可能会做这样的事情:

光盘<DisplayImage_directory>
光盘 src
./DisplayImage ../images/HappyLittleFish.png

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

  1. 转到?Run->Run 配置
  2. 在“C/C++ 应用程序”下,您将看到可执行文件的名称 + 调试(如果没有,请单击“C/C++ 应用程序”几次)。选择名称(在本例中为?DisplayImage Debug)。
  3. 现在,在窗口的右侧,选择“参数”选项卡。 写下我们要打开的图像文件的路径(相对于工作区/DisplayImage 文件夹的路径)。让我们使用?HappyLittleFish.png

    a14.png

  4. 单击“应用”按钮,然后单击运行”。应该会弹出一个 OpenCV 窗口,其中包含鱼图像(或您使用的任何图像)。

    a15.jpg

  5. 祝贺!您已经准备好使用 Eclipse 享受 OpenCV 的乐趣了。

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

假设您有或创建一个名为?foo?的目录中的新文件?helloworld.cpp

#include < opencv2/opencv.hpp>
使用命名空间 CV;
int main ( int argc, char **argv )
{
垫子img(480, 640, CV_8U);
putText(img, “Hello World!”Point( 200, 400 ), FONT_HERSHEY_SIMPLEX |FONT_ITALIC, 1.0, 标量( 255, 255, 0 ));
imshow“我的窗口”, img);
返回 0;
}
  1. 创建一个构建目录,比如说,在?foo: mkdir /build 下。然后 cd build。
  2. 在构建中放置一个文件:CmakeLists.txt
    项目( helloworld_proj )
    FIND_PACKAGE( 需要 OpenCV )
    ADD_EXECUTABLE( helloworld helloworld.cxx )
    TARGET_LINK_LIBRARIES( helloworld \f${OpenCV_LIBS} )
  3. 运行:cmake-gui ..并确保填写 OpenCV 的构建位置。
  4. 然后单击“配置”,然后单击“生成”。如果没问题,请退出 cmake-gui
  5. 运行(-j4 是可选的,它只是告诉编译器在 4 个线程中构建)。确保它构建。make -j4
  6. 启动 eclipse。将工作区放在某个目录中,但不要放在 foo 或foo\build
  7. 右键单击 Project Explorer 部分。选择“导入”,然后打开 C/C++ 筛选器。选择“现有代码”作为生成文件项目。
  8. 为您的项目命名,说?helloworld。浏览到“现有代码”位置(运行 cmake-gui 的位置)。在 *“Toolchain for Indexer Settings”* 中选择?Linux GCC,然后按?Finishfoo\build
  9. 右键单击 Project Explorer 部分。选择“属性”。在 C/C++ Build 下,将?build directory:?从 something like to 设置为,因为这是您要构建的位置。${workspace_loc:/helloworld}${workspace_loc:/helloworld}/build
    1. 您还可以选择修改 Build 命令:从 make 修改为类似命令,告诉编译器生成详细的符号文件进行调试,并在 4 个并行线程中进行编译。make VERBOSE=1 -j4
  10. 做!
文章来源:https://blog.csdn.net/2301_81888214/article/details/135472404
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。