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

先决条件

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

  1. 在您的工作站中安装了 Eclipse(只需要 C/C++ 的 CDT 插件)。您可以按照以下步骤操作:
    • 转到 Eclipse 站点
    • 下载面向 C/C++ 开发人员的 Eclipse IDE。根据您的工作站选择链接。
  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. 做!

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

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

相关文章

LT8911EX LVDS 转 eDP

概述 Lontium LT8911EX 是 LVDS 至 eDP 转换器&#xff0c;具有单端口或双端口可配置 LVDS 接收器&#xff0c;具有 1 个时钟通道和多达 8 个数据通道&#xff0c;每个数据通道的最大工作速率为 1.2Gbps&#xff0c;最大输入带宽为 9.6Gbps。该转换器对输入LVDS数据进行反串行…

TikTok云手机:突破传统社媒营销方式的黑科技

随着TikTok成为全球短视频领域的佼佼者&#xff0c;更多的企业和个人希望借助这个平台获得曝光和用户黏性。在这个背景下&#xff0c;TikTok云手机应运而生&#xff0c;为用户提供了更为便捷、高效的社交媒体运营方式。接下来&#xff0c;我们将深入剖析TikTok云手机的神奇之处…

深度学习技巧应用32-在YOLOv5模型上使用TensorRT进行加速的应用技巧

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用32-在YOLOv5模型上使用TensorRT进行加速的应用技巧,TensorRT是NVIDIA公司提供的一个深度学习推理(inference)优化器和运行时库。它专门为生产环境下的高性能深度学习推理提供优化支持。TensorRT可以加速深度学习模型…

安全漏洞周报(2024.01.01-2023.01.08)

漏洞速览 ■ 用友CRM系统存在逻辑漏洞 漏洞详情 1. 用友CRM系统存在逻辑漏洞 漏洞介绍&#xff1a; 某友CRM系统是一款综合性的客户关系管理软件&#xff0c;旨在帮助企业建立和维护与客户之间的良好关系。它提供了全面的功能&#xff0c;包括销售管理、市场营销、客户服…

AWS简介(Amazon Web Services )想使用怎么办?

Amazon Web Services&#xff08;AWS&#xff09;是由亚马逊公司提供的云计算平台和服务。AWS提供了一系列基础设施服务&#xff0c;包括计算能力、存储选项、数据库、机器学习、分析、物联网、安全性等&#xff0c;帮助组织和开发者建立和管理他们的应用。 以下是AWS的一些关…

如何用GPT写代码?

详情点击链接&#xff1a;如何用GPT写代码&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己的GPTs…

芯课堂 | SWM341系列屏驱应用之素材篇

今天小编给大家带来的是SWM341系列芯片在屏驱应用下对于素材预处理环节的详细介绍&#xff1a; 其中图片与字体是依托 LVGL 生态构建&#xff0c;而音视频是与 SWM341 的外设密切相关。 01.图片预处理 输出数据格式&#xff1a;Binary RGB565&#xff08;Swap&#xff09;or …

springboot私人健身与教练预约管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

汽车产线设备CAN总线一键刷写方案

汽车产线设备CAN总线一键刷写方案 一、概述 随着汽车工业的不断发展&#xff0c;CAN总线技术在汽车产线设备中得到了广泛应用。然而&#xff0c;在实际生产过程中&#xff0c;设备的软件升级和配置更改是不可避免的。为了提高生产效率&#xff0c;我们推出了一键刷写CAN总线解…

HarmonyOS 开发基础(八)Row和Column

HarmonyOS 开发基础&#xff08;八&#xff09;Row和Column 一、Column 容器 1、容器说明&#xff1a; 纵向容器主轴方向&#xff1a;从上到下纵向交叉轴方向&#xff1a;从左到右横向 2、容器属性&#xff1a; justifyContent&#xff1a;设置子元素在主轴方向的对齐格式…

应用GIS进行生态敏感性评价

生态环境敏感性是指生态系统对区域内自然和人类活动干扰的敏感程度&#xff0c;它反映区域生态系统在遇到干扰时&#xff0c;发生生态环境问题的难易程度和可能性的大小&#xff0c;并用来表征外界干扰可能造成的后果。即在同样干扰强度或外力作用下&#xff0c;各类生态系统出…

Qt中QGraphicsView总体架构学习

前沿 前段时间学习了下如何在QGraphicsView架构中绘制刻度尺&#xff0c;主要是与OnPainter中进行比较的&#xff0c;那么今天就来详细讲解下我对QGraphicsView框架的认知吧~ 最近一段时间想学习下&#xff0c;如果我有不正确的&#xff0c;欢迎留言探讨哟~ QGraphicsView架…

页面无缘无故出现数字(Smarty的模板使用)

出现的数字是定义的用户的每条数据的排序&#xff0c;就像这个页面的第一个用户有10条数据01234569 目的是为了合并用户的单元格 解决&#xff1a;

多机TCP通讯之hello world(C++)

文章目录 TCP是什么准备工作CMakeLists.txt服务端代码客户端代码参考 TCP是什么 TCP&#xff08;传输控制协议&#xff09;是一种在计算机网络中广泛使用的协议&#xff0c;它提供了可靠的、面向连接的数据传输服务。TCP 是 OSI 模型中的传输层协议&#xff0c;它确保了数据的…

ChatGPT本地部署,学习记录

一、GPT4ALL模型 官网地址&#xff1a; Github&#xff1a;https://github.com/nomic-ai/gpt4all GPT4ALL项目部署简易&#xff0c;但是在运行体验上一般&#xff0c;并且是只调用CPU来进行运算。 看官方文档介绍在嵌入式上有比较大的优势&#xff0c;但是目前个人对嵌入式…

解锁Python库中操作系统级别模块psutil

目录 一、psutil库简介 二、安装psutil库 三、获取系统信息 1、获取CPU信息&#xff1a; 2、获取内存信息&#xff1a; 3、获取磁盘信息&#xff1a; 4、获取网络信息&#xff1a; 四、进程管理 五、系统信息和监控 六、总结 随着Python的普及&#xff0c;越来越多的…

2024年美赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

13.若依代码自动生成功能详解

文章目录 1.代码自动生成功能2.功能的使用3. 代码的导出和使用 1.代码自动生成功能 基于若依的目录结构&#xff0c;若依本身提供了代码生成功能&#xff0c;可以根据数据库表的内容&#xff0c;生成一些基本的CRUD的前后端的功能。本文将生成过程中的一些注意事项&#xff0c…

OpenGL排坑指南—贴图纹理绑定和使用

一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式&#xff0c;主要步骤是先创建一个纹理的对象&#xff0c;和创建顶点VAO类似&#xff0c;然后就开始绑定这个纹理&#xff0c;最后在循环中使用&#xff0c;有时候可能还要用到激活纹理单元的函数。然而&#xff…

了解Python中的requests.Session对象及其用途

前言 在Python的网络编程中&#xff0c;requests库是一个非常流行的HTTP客户端库&#xff0c;用于发送各种类型的HTTP请求。在requests库中&#xff0c;requests.Session对象提供了一种在多个请求之间保持状态的方法本文将探讨Python中的requests.Session对象及其用途&#xf…