上一个教程: 使用 gcc 和 CMake 进行 OpenCV 开发
下一个教程: 在 Windows 中安装
| |
| 原始作者 | Ana Huamán |
| 兼容性 | OpenCV >= 3.0 |
- 警告
- 本教程可能包含过时的信息。
前提条件
两种方式,一种是直接创建项目,另一种是通过 CMake
- 已安装 Eclipse 在您的工作站上(只需要 C/C++ 的 CDT 插件)。您可以按照以下步骤操作
- 已安装 OpenCV。 如果还没有,请点击这里。
创建项目
- 启动 Eclipse。 只需运行该文件夹中的可执行文件即可。
- 转到 File -> New -> C/C++ Project
- 为您的项目选择一个名称(例如 DisplayImage)。 对于此示例,Empty Project 应该可以。
- 保留其他所有默认设置。 按 Finish。
- 您的项目(在本例中为 DisplayImage)应出现在 Project Navigator 中(通常在窗口的左侧)。
- 现在,让我们添加一个使用 OpenCV 的源文件
- 右键单击 DisplayImage(在导航器中)。 New -> Folder 。
- 将您的文件夹命名为 src,然后点击 Finish
- 右键单击您新创建的 src 文件夹。 选择 New source file
- 将其命名为 DisplayImage.cpp。 点击 Finish
- 所以,现在您有了一个带有空的 .cpp 文件的项目。 让我们用一些示例代码填充它(换句话说,复制并粘贴下面的代码片段)
#include <opencv2/opencv.hpp>
int main(
int argc,
char** argv )
{
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;
}
uchar * data
指向数据的指针
定义 mat.hpp:2167
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
- 我们只缺少最后一个步骤:告诉 OpenCV OpenCV 头文件和库的位置。 为此,请执行以下操作
- 转到 Project–>Properties
- 在 C/C++ Build 中,单击 Settings。 在右侧,选择 Tool Settings 选项卡。 在这里我们将输入头文件和库信息
- 在 GCC C++ Compiler 中,转到 Includes。 在 Include paths(-l) 中,您应该包含 opencv 安装的文件夹的路径。 在我们的示例中,它是 /usr/local/include/opencv。
- 注意
- 如果您不知道您的 opencv 文件在哪里,请打开 Terminal 并输入
pkg-config --cflags opencv
例如,该命令给了我这个输出-I/usr/local/include/opencv -I/usr/local/include
现在转到 GCC C++ Linker,您必须填写两个空格
首先在 Library search path (-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
如果您不知道您的库在哪里(或者您只是精神病患者并想确保路径正确),请在 Terminal 中输入
我的输出(如果您想检查)是
-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
现在您已完成。 点击 OK
如果您在文件夹中检查,那里应该有一个可执行文件。
运行可执行文件
所以,现在我们有一个准备运行的可执行文件。 如果我们要使用终端,我们可能会做类似的事情
cd <DisplayImage_directory>
cd src
./DisplayImage ../images/HappyLittleFish.png
假设用作参数的图像位于 <DisplayImage_directory>/images/HappyLittleFish.png 中。 我们仍然可以这样做,但让我们从 Eclipse 中进行
- 转到 Run->Run Configurations
- 在 C/C++ Application 下,您将看到您的可执行文件的名称 + Debug(如果没有,请多次单击 C/C++ Application)。 选择名称(在本例中为 DisplayImage Debug)。
- 现在,在窗口的右侧,选择 Arguments 选项卡。 写入我们要打开的图像文件的路径(路径相对于 workspace/DisplayImage 文件夹)。 让我们使用 HappyLittleFish.png
- 单击 Apply 按钮,然后单击 Run。 应该会弹出一个带有鱼图像的 OpenCV 窗口(或者您使用的任何图像)。
- 恭喜! 您已准备好使用 Eclipse 来享受 OpenCV 的乐趣。
V2: 在 Eclipse (插件 CDT) 中使用 CMake+OpenCV
假设您有一个或创建一个新文件,helloworld.cpp,位于名为 foo 的目录中
#include <opencv2/opencv.hpp>
int main (
int argc,
char **argv )
{
putText(img,
"Hello World!",
Point( 200, 400 ), FONT_HERSHEY_SIMPLEX | FONT_ITALIC, 1.0,
Scalar( 255, 255, 0 ));
imshow("My Window", img);
cv::Mat::empty
return 0;
}
- 创建一个构建目录,例如,在 foo 下:mkdir /build。 然后 cd build。
- 在 build 中放置一个
CmakeLists.txt 文件PROJECT( helloworld_proj )
FIND_PACKAGE( OpenCV REQUIRED )
ADD_EXECUTABLE( helloworld helloworld.cxx )
TARGET_LINK_LIBRARIES( helloworld \f${OpenCV_LIBS} )
- 运行:cmake-gui .. 并确保您填写了 OpenCV 的构建位置。
- 然后单击 configure,然后单击 generate。 如果没问题,退出 cmake-gui
- 运行
make -j4(-j4 是可选的,它只是告诉编译器以 4 个线程构建)。 确保它可以构建。
- 启动 eclipse。 将工作空间放在某个目录中,但不要放在 foo 或
foo\build 中
- 在 Project Explorer 部分中右键单击。 选择 Import,然后打开 C/C++ 过滤器。 选择 Existing Code 作为 Makefile Project。
- 命名您的项目,例如 helloworld。 浏览到 Existing Code 位置
foo\build(您从中运行 cmake-gui 的位置)。 在 "Toolchain for Indexer Settings" 中选择 Linux GCC,然后按 Finish。
- 在 Project Explorer 部分中右键单击。 选择 Properties。 在 C/C++ Build 下,将 build directory: 从类似
${workspace_loc:/helloworld} 的内容设置为 ${workspace_loc:/helloworld}/build,因为这是您要构建到的位置。
- 您也可以选择修改 Build command:从 make 到类似
make VERBOSE=1 -j4 的内容,这会告诉编译器生成详细的符号文件以进行调试,并且还以 4 个并行线程进行编译。
- 完成!