先决条件
两种方式,一种是直接形成项目,另一种是 CMake 先决条件
- 在您的工作站中安装了 Eclipse(只需要 C/C++ 的 CDT 插件)。您可以按照以下步骤操作:
- 转到 Eclipse 站点
- 下载面向 C/C++ 开发人员的 Eclipse IDE。根据您的工作站选择链接。
- 已安装 OpenCV。如果还没有,请转到此处。
制作项目
- 启动 Eclipse。只需运行文件夹中的可执行文件即可。
-
转到文件 -> 新建 -> C/C++ 项目
-
为您的项目选择一个名称(即 DisplayImage)。对于此示例,空项目应该没问题。
- 默认情况下保留其他所有内容。按 Finish(完成)。
-
您的项目(在本例中为 DisplayImage)应显示在“项目导航器”(通常位于窗口的左侧)中。
- 现在,让我们使用 OpenCV 添加一个源文件:
-
右键单击 DisplayImage(在导航器中)。新建 -> 文件夹 。
- 将文件夹命名为 src,然后点击完成
- 右键单击新创建的 src 文件夹。选择 New source file:
-
将其命名为 DisplayImage.cpp。命中完成
-
- 因此,现在您有一个包含空 .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;}
- 我们只缺少最后一步:告诉 OpenCV OpenCV 头文件和库在哪里。为此,请执行以下操作:
- 转到“项目”–>属性
- 在 C/C++ Build 中,单击“设置”。在右侧,选择“工具设置”选项卡。在这里,我们将输入标头和库信息:
-
在 GCC C++ 编译器中,转到包含。在 Include paths(-l) 中,您应该包括安装 opencv 的文件夹的路径。在我们的示例中,这是 /usr/local/include/opencv。
注意
如果您不知道 opencv 文件的位置,请打开终端并键入:pkg-config --cflags opencv-I/usr/local/include/opencv -I/usr/local/include -
现在转到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
如果您不知道您的库在哪里(或者您只是精神病患者,想确保路径正常),请输入终端:
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
在控制台中,您应该会得到类似以下内容
如果您签入文件夹,那里应该有一个可执行文件。
运行可执行文件
所以,现在我们有一个可执行文件可以运行了。如果我们要使用终端,我们可能会做这样的事情:
假设用作参数的图像位于 <DisplayImage_directory>/images/HappyLittleFish.png 中。我们仍然可以这样做,但让我们从 Eclipse 开始:
- 转到 Run->Run 配置
- 在“C/C++ 应用程序”下,您将看到可执行文件的名称 + 调试(如果没有,请单击“C/C++ 应用程序”几次)。选择名称(在本例中为 DisplayImage Debug)。
-
现在,在窗口的右侧,选择“参数”选项卡。 写下我们要打开的图像文件的路径(相对于工作区/DisplayImage 文件夹的路径)。让我们使用 HappyLittleFish.png:
-
单击“应用”按钮,然后单击“运行”。应该会弹出一个 OpenCV 窗口,其中包含鱼图像(或您使用的任何图像)。
- 祝贺!您已经准备好使用 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;}
- 创建一个构建目录,比如说,在 foo: mkdir /build 下。然后 cd build。
- 在构建中放置一个文件:
CmakeLists.txt
项目( helloworld_proj )FIND_PACKAGE( 需要 OpenCV )ADD_EXECUTABLE( helloworld helloworld.cxx )TARGET_LINK_LIBRARIES( helloworld \f${OpenCV_LIBS} ) - 运行:cmake-gui ..并确保填写 OpenCV 的构建位置。
- 然后单击“配置”,然后单击“生成”。如果没问题,请退出 cmake-gui
- 运行(-j4 是可选的,它只是告诉编译器在 4 个线程中构建)。确保它构建。
make -j4
- 启动 eclipse。将工作区放在某个目录中,但不要放在 foo 或
foo\build
- 右键单击 Project Explorer 部分。选择“导入”,然后打开 C/C++ 筛选器。选择“现有代码”作为生成文件项目。
- 为您的项目命名,说 helloworld。浏览到“现有代码”位置(运行 cmake-gui 的位置)。在 *“Toolchain for Indexer Settings”* 中选择 Linux GCC,然后按 Finish。
foo\build
- 右键单击 Project Explorer 部分。选择“属性”。在 C/C++ Build 下,将 build directory: 从 something like to 设置为,因为这是您要构建的位置。
${workspace_loc:/helloworld}
${workspace_loc:/helloworld}/build
- 您还可以选择修改 Build 命令:从 make 修改为类似命令,告诉编译器生成详细的符号文件进行调试,并在 4 个并行线程中进行编译。
make VERBOSE=1 -j4
- 您还可以选择修改 Build 命令:从 make 修改为类似命令,告诉编译器生成详细的符号文件进行调试,并在 4 个并行线程中进行编译。
- 做!