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

news2024/11/24 19:09:41

返回: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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R统计学3 - 数据分析入门问题41-60

往期R统计学文章: R统计学1 - 基础操作入门问题1-20 R统计学2 - 数据分析入门问题21-40 41. R 语言如何做双坐标图? # 创建模拟数据 year <- 2014:2024 gdp <- data.frame(year, GDP = sort(rnorm(11, 1000, 100))) ur <- data.frame(year, UR = rnorm(11, 5, 1…

吴恩达deeplearning.ai:使用多个决策树随机森林

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 为什么要使用树集合使用多个决策树(Tree Ensemble)有放回抽样随机森林XGBoost(eXtream Gradient Boosting)XGBoost的库实现何时使用决策树决策树和树集合神经网络 使用单个决策树的…

将OpenCV与gcc和CMake结合使用

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇&#xff1a; 引言&#xff1a; 近年来&#xff0c;计算机视觉技术在图像处理、目标检测和机器人等方面得到了广泛的应用…

简易版 RPC 框架实现 2.0 -netty实现

这一篇理解如果有难度&#xff0c;可能对netty不是很理解&#xff0c; 可以关注我netty专栏&#xff0c;还有另外一篇&#xff1a; 用 Netty 自己实现简单的RPC&#xff0c; 这一篇是学习netty的时候写的&#xff0c;更倾向于分析netty相关的知识&#xff0c; 今天我是学习dubb…

win10 + cpu + pycharm + mindspore

MindSpore是华为公司自研的最佳匹配昇腾AI处理器算力的全场景深度学习框架。 1、打开官网&#xff1a; MindSpore官网 2、选择以下选项&#xff1a; 3、创建conda 环境&#xff0c;这里python 选择3.9.0&#xff0c;也可以选择其他版本&#xff1a; conda create -c conda-…

[VulnHub靶机渗透] BNE0x03 Simple

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

智慧交通:构建智慧城市的重要一环

随着信息技术的飞速发展&#xff0c;智慧城市已成为现代城市发展的重要方向。作为智慧城市的重要组成部分&#xff0c;智慧交通以其高效、便捷、环保的特性&#xff0c;成为推动城市现代化进程的关键力量。本文将从智慧交通的概念、发展现状、面临挑战以及未来趋势等方面&#…

以题为例浅谈文件包含

什么叫做文件包含 文件包含函数加载的参数没有经过过滤或严格定义&#xff0c;可以被用户控制&#xff0c; 包含其他恶意文件&#xff0c;导致了执行非预期代码。 文件包含漏洞&#xff08;File Inclusion Vulnerability&#xff09;是一种常见的网络安全漏洞&#xff0c;它允…

HTML5CSS3提高导读

HTML5CSS3提高导读 2024/2/20 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这 …

瑞熙贝通实验室安全培训考试系统

一、系统概述 瑞熙贝通实验室安全培训考试系统是一种基于互联网和人工智能技术的在线考试平台&#xff0c;旨在旨在提供实验室安全教育和考核的全面解决方案。该系统可以帮助实现实验室安全培训考试的在线化、智能化和规范化&#xff0c;提高实验室安全意识和能力&#xff0c;…

计算机网络——物理层(编码与调制)

计算机网络——编码与调制 基带信号和宽带信号编码与调制数字数据编码为数字信号非归零编码归零编码反向不归零编码曼彻斯特编码差分曼彻斯特编码4B/5B编码 数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号 我们之前讲了物理层的一些基础知识和两个准则&a…

vite打包时发布时,放在服务器的二级目录中

方式一 hash模式 如果我们的站点根目录为 public , 我们访问的时候使用的是 http://www.abc.com/ 访问到了站点的根目当&#xff0c;现在我们要访问 http://www.abc.com/mysite/#/ 配置如下 修改 vite.config.js base:“/mysite/” 修改 router中的配置 上面的步骤完成&…

Luckysheet + Exceljs:H5实现Excel在线编辑、导入、导出及上传服务器的示例代码(完整版demo)

创建xeditor.html <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World!</title><!-- <link relstylesheet href./luckysheet/plugins/css/pluginsCss.css /><link relstylesheet href./luck…

[游戏开发][UE5.3]GAS学习心得

GAS(GameplayAbilitySystem) UE提供的一套技能框架&#xff0c;这个框架也不是万能的&#xff0c;甚至各个部件你要进行封装开发&#xff0c;但这也比你从头写一套技能框架要容易很多。 GAS功能极其强大&#xff0c;所以它是一个庞大的系统&#xff0c;如果想运用得当&#x…

【刷题训练】牛客:JZ31 栈的压入、弹出序列

文章目录 一、题目要求二、解题思路三、C代码四、注意点五、运行成功 一、题目要求 二、解题思路 题意解读。本道题给定了两个序列pushV和popV&#xff0c;其中序列pushV是入栈顺序&#xff0c;popV是出栈顺序。问题就是让我们去判断这个popV的顺序是否可能是pushV的弹出顺序。…

瑞_Redis_短信登录(二)

文章目录 项目介绍1.1 项目准备1.2 基于Session实现登录流程1.2.1 发送短信验证码1.2.2 短信验证码登录、注册1.2.3 校验登录状态 1.3 实现发送短信验证码功能1.3.1 页面流程1.3.2 代码实现 1.41.51.6 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的…

【LeetCode热题100】148. 排序链表(链表)

一.题目要求 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输…

知名Web3投资基金a16z合伙人Jane Lippencott确认出席Hack.Summit() 2024区块链开发者大会

在区块链技术的风起云涌和Web3生态的蓬勃发展中&#xff0c;知名a16z Crypto的合伙人Jane Lippencott已确认出席即将于2024年4月9日至10日在香港数码港举行的Hack.Summit() 2024区块链开发者大会。作为亚洲首次举办的Hack.Summit()&#xff0c;此次大会将为全球区块链开发者及业…

DFS的一些题目

题目1&#xff1a;奶牛选美 这道题其实就是把两个连通块合成一个&#xff0c;可以用dfs、bfs和并查集。因为最近在dfs专题训练&#xff0c;这里我只写了dfs。 首先我们用dfs的方式遍历两个连通块&#xff0c;将两个连通块中点的坐标分别存入两个数组中&#xff0c;将这两个数组…

openssl3.2 - note - Writing OpenSSL Provider Skeleton

文章目录 openssl3.2 - note - Writing OpenSSL Provider Skeleton概述笔记测试工程的建立复现的provider工程总结Provider包含的头文件openssl/core.h中的数据结构实现 OSSL_provider_init()看一下openssl自带的提供者provider的openssl命令行测试provider的本质是hook了opens…