上一篇教程: 使用gcc和CMake开发OpenCV
下一篇教程: Windows安装
| |
原作者 | Ana Huamán |
兼容性 | OpenCV >= 3.0 |
- 警告
- 本教程可能包含已过时信息。
预备条件
两种方法,一种是直接创建项目,另一种是使用CMake的预备条件
- 在您的工作站上安装 Eclipse(只需要C/C++的CDT插件)。您可以按照以下步骤操作
- 安装OpenCV。如果尚未安装,请点击 此处。
创建项目
- 启动Eclipse。只需运行文件夹中的可执行文件即可。
- 点击文件 -> 新建 -> C/C++ 项目
- 为您的项目选择一个名称(例如DisplayImage)。对于此示例,空项目即可。
- 保留其他所有默认设置。点击完成。
- 您的项目(在本例中为DisplayImage)应该会出现在项目导航器中(通常位于窗口左侧)。
- 现在,让我们添加一个使用OpenCV的源文件
- 右键点击DisplayImage(在导航器中)。新建 -> 文件夹。
- 将文件夹命名为src,然后点击完成
- 右键点击您新创建的src文件夹。选择新建源文件
- 将其命名为DisplayImage.cpp。点击完成
- 因此,现在您拥有一个包含空.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 0; -1;
}
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(0);
return 0; 0;
}
uchar * data
指向数据的指针
定义 mat.hpp:2157
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
- 我们只缺少最后一步:告诉OpenCV OpenCV头文件和库的位置。为此,请执行以下操作
- 点击项目 -> 属性
- 在C/C++ 构建中,点击设置。在右侧,选择工具设置选项卡。在这里,我们将输入头文件和库信息
- 在GCC C++ 编译器中,转到包含。在包含路径(-l)中,您应该包含opencv安装文件夹的路径。在我们的示例中,这是/usr/local/include/opencv。
- 注意
- 如果您不知道opencv文件在哪里,请打开终端并输入
pkg-config --cflags opencv
例如,该命令给了我以下输出-I/usr/local/include/opencv -I/usr/local/include
现在转到GCC C++ 链接器,您需要填写两个空格
首先在库搜索路径(-L)中,您必须写入opencv库所在路径,在我的情况下,路径是:
/usr/local/lib
然后在库(-l)中添加您可能需要的OpenCV库。通常,下面列表中的前四个就足够了(对于简单的应用程序)。在我的情况下,我将使用所有库,因为我计划使用所有功能
opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_ml opencv_videoio opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_flann
如果您不知道库在哪里(或者您只是精神错乱并想确保路径正确),请在终端中输入
我的输出(如果您想检查)是
-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
现在您完成了。点击确定
如果您检查您的文件夹,应该会有一个可执行文件。
运行可执行文件
所以,现在我们有一个可执行文件可以运行了。如果我们使用终端,我们可能会执行以下操作
cd <DisplayImage_directory>
cd src
./DisplayImage ../images/HappyLittleFish.png
假设用作参数的图像位于<DisplayImage_directory>/images/HappyLittleFish.png。我们仍然可以这样做,但是让我们从Eclipse中进行操作
- 点击运行 -> 运行配置
- 在C/C++应用程序下,您将看到可执行文件的名称+调试(如果没有,请多次点击C/C++应用程序)。选择名称(在本例中为DisplayImage Debug)。
- 现在,在窗口的右侧,选择参数选项卡。写入我们要打开的图像文件的路径(相对于工作区/DisplayImage文件夹的路径)。让我们使用HappyLittleFish.png
- 点击应用按钮,然后点击运行。一个OpenCV窗口应该会弹出,显示鱼的图像(或您使用的任何图像)。
- 恭喜!您已准备好使用Eclipse进行OpenCV开发。
V2:使用CMake+OpenCV和Eclipse(插件CDT)
假设您拥有或创建了一个新文件,名为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);
waitKey();
return 0; 0;
}
#define CV_8U
定义 interface.h:73
- 创建一个构建目录,例如在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的构建位置。
- 然后点击配置,然后生成。如果一切正常,退出cmake-gui
- 运行
make -j4
(-j4是可选的,它只是告诉编译器使用4个线程进行构建)。确保它构建成功。
- 启动eclipse。将工作区放在某个目录中,但不要放在foo或
foo\build
中
- 在项目资源管理器(Project Explorer)区域右键单击。选择“导入”(Import),然后打开 C/C++ 过滤器。选择“现有代码”(Existing Code)作为 Makefile 项目。
- 为您的项目命名,例如 helloworld。浏览到现有代码位置
foo\build
(您从这里运行 cmake-gui)。在“索引器设置工具链”(Toolchain for Indexer Settings)中选择“Linux GCC”,然后按“完成”(Finish)。
- 在项目资源管理器(Project Explorer)区域右键单击。选择“属性”(Properties)。在 C/C++ 构建(C/C++ Build)下,将构建目录(build directory)从类似
${workspace_loc:/helloworld}
的路径更改为 ${workspace_loc:/helloworld}/build
,因为这是您的构建目标位置。
- 您还可以选择修改构建命令(Build command):将 make 更改为类似
make VERBOSE=1 -j4
的命令,这将指示编译器生成详细的符号文件以进行调试,并使用 4 个并行线程进行编译。
- 完成!