将 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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio入门——页面跳转

1.工程目录 2.MainActivity package com.example.demo01;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCo…

Spark-Scala语言实战(1)

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

【STM32定时器 TIM小总结】

STM32 TIM详解 TIM介绍定时器类型基本定时器通用定时器高级定时器常用名词时序图预分频时序计数器时序图 定时器中断配置图定时器定时 代码调试 TIM介绍 定时器&#xff08;Timer&#xff09;是微控制器中的一个重要模块&#xff0c;用于生成定时和延时信号&#xff0c;以及处…

子组件自定义事件$emit实现新页面弹窗关闭之后父界面刷新

文章目录 需求弹窗关闭之后父界面刷新展示最新数据 实现方案AVUE 大文本默认展开slotVUE 自定义事件实现 父界面刷新那么如何用呢? 思路核心代码1. 事件定义2. 帕斯卡命名组件且在父组件中引入以及注册3. 子组件被引用与父事件监听4.父组件回调函数 5.按钮弹窗事件 需求 弹窗…

软件之禅(十)数据库

黄国强 2024/03/16 说点题外话&#xff0c;写程序是个非常有意思的智力游戏&#xff0c;想到业内很多人把这么一个智力游戏变成体力劳动&#xff0c;颇有些唏嘘。 回到正题&#xff0c;继续我对软件的思考。我是80年代的大学生&#xff0c;当时学的是dBASE数据库。毕业…

Qt教程 — 3.3 深入了解Qt 控件:Input Widgets部件(2)

目录 1 Input Widgets简介 2 如何使用Input Widgets部件 2.1 QSpinBox组件-窗口背景不透明调节器 2.2 DoubleSpinBox 组件-来调节程序窗口的整体大小 2.3 QTimeEdit、QDateEdit、QDateTimeEdit组件-编辑日期和时间的小部件 Input Widgets部件部件较多&#xff0c;将分为三…

Python深度学习之路:TensorFlow与PyTorch对比【第140篇—Python实现】

Python深度学习之路&#xff1a;TensorFlow与PyTorch对比 在深度学习领域&#xff0c;TensorFlow和PyTorch是两个备受青睐的框架&#xff0c;它们为开发人员提供了强大的工具来构建和训练神经网络模型。本文将对这两个框架进行对比&#xff0c;探讨它们的优势和劣势&#xff0…

315曝光黑灰产业链:主板机

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 315晚会曝光主板机黑灰产业链&#xff0c;主板机是什么呢?可能很多人还不知道。在这里松松给大家普及一下&#xff0c;也欢迎大家关注卢松松哟! 主板机是什么呢? 通过报废手机的主板&#xff0c;拆出来后组装成主…

Ubuntu 20.04 系统如何优雅地安装NCL?

一、什么是NCL&#xff1f; NCAR Command Language&#xff08;NCL&#xff09;是由美国大气研究中心&#xff08;NCAR&#xff09;推出的一款用于科学数据计算和可视化的免费软件。 它有着非常强大的文件输入和输出功能&#xff0c;可读写netCDF-3、netCDF-4 classic、HDF4、b…

大衍数列-蓝桥杯?-Lua 中文代码解题第2题

大衍数列-蓝桥杯&#xff1f;-Lua 中文代码解题第2题 中国古代文献中&#xff0c;曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。 它的前几项是&#xff1a;0、2、4、8、12、18、24、32、40、50 … 其规律是&#xff1a;对偶数项&#xff0c;是序号平方再除…

React 实现下拉刷新效果

简介 本文基于react实现下拉刷新效果&#xff0c;在下拉的时候会进入loading状态。 实现效果 效果如上图所示&#xff0c;在下拉到底部时候&#xff0c;会出现loading条&#xff0c;在处理完成后loading条消失。 具体代码 布局 & 逻辑 import {useRef, useState} from …

C语言-strtok(切片的使用)

strtok&#xff08;切片的使用&#xff09; 使用规则 使用的基本情况 strcpy 第二次调用的时候传的是空指针 所以打印出来的是 每一次调用函数都会把当前函数的地址记住 所以二次调用的时候 传的是null 连起始位置都不传了 只是传null 但是需要知道的是 当知道三段 你调用第…