将 OpenCV 与 Eclipse 结合使用(插件 CDT)

返回:OpenCV系列文章目录(持续更新中......) 

上一篇:将OpenCV与gcc和CMake结合使用

下一篇:OpenCV4.9.0在windows系统下的安装 

警告:

本教程可以包含过时的信息。

先决条件

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

  1. 在您的工作站中安装了 Eclipse(只需要 C/C++ 的 CDT 插件)。您可以按照以下步骤操作:
    • 转到 Eclipse 站点
    • 下载面向 C/C++ 开发人员的 Eclipse IDE。根据您的工作站选择链接。
  2. 安装了 OpenCV.如果还没有,请转到此处。

制作项目

  1. 启动 Eclipse。只需运行文件夹中的可执行文件即可。
  2. 转到File -> New -> C/C++ Project(文件->新建->C/C++工程->)

    a0.png

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

    a1.png

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

    a3.png

  6. 使用 OpenCV 添加一个源文件::
    • 右键单击DisplayImage (在导航器中). New -> Folder(新建文件夹) .

      a4.png

    • 将文件夹命名为 src,然后点击 Finish(完成)
    • 右键单击新创建的 src 文件夹。选择 New source file(新建 -> 文件)
    • 设置文件名为: DisplayImage.cpp. 点击Finish(完成)

      a7.png

  7. 出现一个心得空.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 -1;
    }
    namedWindow( "Display Image", WINDOW_AUTOSIZE );
    imshow( "Display Image", image );
    waitKey(0);
    return 0;
    }​
  8. 设置以下 OpenCV 头文件和库路径:
    • 转到项目Project–>Properties(项目->属性)
    • 在 C/C++ Build 中,单击“设置”。在右侧,选择“工具设置”选项卡。在这里,我们将输入标题和库信息:
      1. 在 GCC C++ 编译器中,转到包含。在 Include paths(-l) 中,包含安装 opencv 的文件夹的路径如: this is /usr/local/include/opencv.

        a9.png

        注意:

        如果您不知道 opencv 文件在哪里,请打开终端并键入:

        pkg-config --cflags opencv

        例如,该命令给了我以下输出:
        -I/usr/local/include/opencv -I/usr/local/include

        转到 GCC /C++ 链接器,需要填充两个空格:

      2. 首先,在库搜索路径 (-L) 中,您必须将路径写入 opencv 库所在的位置,在我的情况下,路径为:

        /usr/local/lib
        然后在 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

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

运行可执行文件

打开终端尝试运行:

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

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

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

    a14.png

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

    a15.jpg

  5. 到此你就可以完成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;
}
​
  1. 创建一个构建目录,比如说,在 foo: mkdir /build 下。然后 cd 构建。
  2. 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. 在“项目资源管理器”部分中单击鼠标右键。选择“导入”,然后打开“C/C++”筛选器。选择“现有代码”作为生成文件项目。
  8. 为您的项目命名,比如 helloworld。浏览到“本地目录”foo\build位置(运行 cmake-gui 的位置)。在 *“Toolchain for Indexer Settings”* 中选择 Linux GCC,然后按完成
  9. 在“项目资源管理器”部分中单击鼠标右键。选择“属性”。在 C/C++ Build 下,设置构建目录:从类似于like ${workspace_loc:/helloworld}  到 ${workspace_loc:/helloworld}/build s的东西,假设这是你要构建到的位置。
    1. 您还可以选择将 Build 命令:从 make 修改选项make VERBOSE=1 -j4 ,它告诉编译器生成详细的符号文件以进行调试,并在 4 个并行线程中进行编译

参考文献:

1.《Using OpenCV with Eclipse (plugin CDT)》作者:Ana Huamán

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/462892.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软考78-上午题-【面向对象技术3-设计模式】-结构型设计模式01

一、适配器模式 1-1、意图 个类的接口转换成客户希望的另外一个接口。 Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 1-2、结构 适配器模式分为&#xff1a; 1、适配器类模式&#xff1b; 2、适配器对象模式 类适配器使用多重继承对一个接口与另…

软考80-上午题-【面向对象技术3-设计模式】-结构型设计模式03

一、外观模式 1-1、意图 为子系统中的一组接口提供一个一致的界面。 Facade 模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。 1-2、结构 Facade 知道哪些子系统类负责处理请求&#xff1a;将客户的请求代理给适当的子系统对象。Subsvstem classes …

CI/CD实战-git工具使用 1

版本控制系统 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 git官网文档&#xff1a;https://git-scm.com/book/zh/v2 Git 有三种状态&#xff1a;已提交&#xff08;committed&#xff09;、已修改&#xff08;modified&#xff09; 和 已暂存&#xff08;sta…

194 基于matlab的日历GUI制作

基于matlab的日历GUI制作&#xff0c;可实时显示当前的日期和时间&#xff0c;精确到秒。非常漂亮&#xff0c;也很基础&#xff0c;学习GUI的不错程序&#xff0c;程序已调通&#xff0c;可直接运行。 194 matlab 日历制作 GUI可视化 - 小红书 (xiaohongshu.com)

Spark-Scala语言实战(1)

在之前的文章中&#xff0c;我们学习了如何在Linux安装Spark以及Scala&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark及Scala的安装https:/…

CSS3技巧38:3D 翻转数字效果

博主其它CSS3 3D的文章&#xff1a; CSS3干货4&#xff1a;CSS中3D运用_css 3d-CSDN博客 CSS3干货5&#xff1a;CSS中3D运用-2_中3d-2-CSDN博客 CSS3干货6&#xff1a;CSS中3D运用-3_css3d 使用-CSDN博客 最近工作上烦心的事情太多&#xff0c;只有周末才能让我冷静一下 cod…

uniapp 写安卓app,运行到手机端 调试

手机 设置》关于手机》点击版本号 4-5次&#xff0c;弹出手机锁屏页面&#xff0c;输入手机锁屏密码 2.手机 设置中 》搜索 开发人员选项 》 调试》打开USB调试 同页面 找到 选择USB配置》选择 MIDIhbuilder 编辑器 点击 》运行》运行到手机或模拟器》运行到Android App基座 》…

【日常记录】【JS】input标签输入中文导致value值的不正确

文章目录 1、描述2、解决方案3、参考 1、描述 在 input标签中&#xff0c;输入中文时&#xff0c;如若监听 input 事件&#xff0c;会得到意想不到的结果&#xff0c;如下面的图所示 2、解决方案 可以用到 compositionstart 监听输入中文开始的事件&#xff0c;compositionend …

inux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)

文章目录 1. 项目文件操作工具类设计 1. 项目文件操作工具类设计 根据前面的分析&#xff0c;这个文件类的基本属性如下&#xff1a; 文件大小信息文件最后修改时间文件最后一次访问时间&#xff0c;方便文件的热点管理文件名称&#xff0c;需要从http 请求行上的uri中获取基…

html编辑器

HTML 编辑器推荐 html可以使用记事本编辑 但是更建议使用专业的 HTML 编辑器来编辑 HTML&#xff0c;我在这里给大家推荐几款常用的编辑器&#xff1a; VS Code&#xff1a;https://code.visualstudio.com/WebStorm: https://www.jetbrains.com/webstorm/Notepad: https://no…

【八】【算法分析与设计】双指针(2)

11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能…

pytorch 入门基础知识一(Pytorch 01)

一 深度学习基础相关 深度学习三个主要的方向&#xff1a;计算机视觉&#xff0c;自然语言&#xff0c;语音识别。 机器学习核心组件&#xff1a;1 数据集(data)&#xff0c;2 前向传播的model(net)&#xff0c;3 目标函数(loss)&#xff0c; 4 调整模型参数和优化函数的算法…

Ascend C编程入门课:编程基础与Hello World

Ascend C编程入门课 一、基础概念 1.Ascend C&#xff1a;是昇腾异构计算架构CANN针对算子开发场景推出的编程语言&#xff0c;通过多层接口抽象、自动并行计算、孪生调试等关键技术&#xff0c;极大提高算子开发效率。 2.使用Ascend C自定义开发算子的优势&#xff1a; (1…

Golang协程详解

一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型&#xff0c;协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程&#xff0c;然后在不同的协程中完成不同的子任…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…

部署一个本地的ChatGPT(Ollama)

一 下载Ollama Ollama下载地址&#xff1a;https://ollama.com/download 下载完后 二 安装运行 双击下载好的OllamaSetup.exe开发 安装Ollama: 安装完成后&#xff0c;多了一个Ollama的菜单如下图 &#xff1a; Ollama安装好默认是配置开机运行&#xff0c;如果没有运行可以在…

高效使用 JMeter 生成随机数:探索 Random 和 UUID 算法

在压力测试中&#xff0c;经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值&#xff0c;本文来具体介绍一下。 随机数函数 JMeter 提供了多个用于生成随机数的函数&#xff0c;其中最常用的是__Random函数。该函数可以生成一个指定范围内的随机整数或浮…

pytorch 实现线性回归(Pytorch 03)

一 线性回归框架 线性模型的四个模块&#xff1a;训练的数据集&#xff0c;线性模型&#xff0c;损失函数&#xff0c;优化算法。 1.1 数据集 使用房价预测数据集&#xff0c;我们希望根据房屋的面积和房龄等来估算房屋价格。 1.2 线性模型 预测公式&#xff0c; 价格 权重…

智慧公厕建设的重要性

智慧公厕建设一直被视为提升城市管理水平的重要举措。作为一个关键的城市基础设施&#xff0c;智慧公厕不仅可以改善公共卫生管理&#xff0c;还能提升城市居民的社会民生生活质量。此外&#xff0c;智慧公厕建设还能促进城市的可持续发展&#xff0c;降低能源消耗&#xff0c;…

rust学习笔记(1-7)

原文 8万字带你入门Rust 1.包管理工具Cargo 新建项目 1&#xff09;打开 cmd 输入命令查看 cargo 版本 cargo --version2&#xff09; 使用 cargo new 项目名 在文件夹&#xff0c;按 shift 鼠标右键 &#xff0c;打开命令行&#xff0c;运行如下命令&#xff0c;即可创建…