提示
两种方式, 一种是直接构建项目, 另外一种是使用CMake
前期准备
- 在你的工作电脑上已经安装 Eclipse (仅需要安装编写C/C++用的 CDT 插件即可). 你可以按照如下步骤:
- 打开Eclipse官网
- 下载 C/C++开发者用的 Eclipse IDE . 根据你的电脑选择合适的链接下载.
- 已经安装OpenCV. 如果没有,跳转到 这里.
创建一个项目
启动Eclipse. 在下载的目录中运行可执行的文件.
点击菜单栏中的文件-->添加-->C/C++项目.
为你的项目选择一个名字 (例如 DisplayImage). 在这个示例中一个 空项目 应该就可以创建了.
让一切都保持默认,然后点击完成
你的项目 (在这里叫 DisplayImage) 应该出现在 项目导航栏 (通常情况下在窗口的左侧).
现在, 我们使用OpenCV来新建一个源文件:
在 DisplayImage (在导航窗口内)上右击. 新增 -> 文件夹 .
将新加的文件夹命名为src, 然后点击 完成
在新加的 src 目录上右击. 选择 创建源文件:
我们叫它DisplayImage.cpp. 然后点击 完成
现在, 你有一个项目,它包含一个空的.cpp文件. 让我们在内部添加一些示例代码(换句话说, 就是复制并粘贴下面的代码片段):
#include <cv.h> #include <highgui.h> using namespace cv; int main( int argc, char** argv ) { Mat image; image = imread( argv[1], 1 ); if( argc != 2 || !image.data ) { printf( "No image data \n" ); return -1; } namedWindow( "Display Image", CV_WINDOW_AUTOSIZE ); imshow( "Display Image", image ); waitKey(0); return 0; }
现在我们就只缺少最后一步了: 告诉OpenCV,它 的头文件与库位置在哪里. 在这里, 执行如下步骤:
如果你检查了你的文件夹, 那里应该有一个可执行文件.
跳转到菜单栏 项目–>属性
在 C/C++ 构建中, 点击 设置. 在右边, 选中 工具设置 选项卡. 在这里,我们将设置头与库文件的信息:
在 GCC C++ 编译器中, 跳转到 Includes. 在 引用目录(-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 库. 通常列表中的头3项已经足够(对简单的应用程序来说) . 对我来说, 当我打算使用它所有的功能时,我就把它们全都加进去了:
opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann
如果你不知道你的库在哪里 (或者刚刚你头脑短路,并且需要确保路径是正确的), 在 终端输入:
pkg-config --libs opencv
我的输出是 (在这里你需要检查一下) : .. code-block:: bash
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
现在完成后,点击 确定
你的项目应该准备好可以构建. 那么,就就跳转到 项目->构建所有
在控制台你将会看到类似的
如果检查你的文件夹, 那里应该生成了一个可执行文件.
运行可执行文件
所以, 现在我们有一个可执行文件. 如果我们使用终端操作, 那我们需要做一些如下的事情:
cd <DisplayImage目录> cd src ./DisplayImage ../images/HappyLittleFish.png
假如做为参数的文件存放于<DisplayImage_directory>/images/HappyLittleFish.png. 我们仍然可以使用上面的命令, 但是让我们在Eclipse中来配置:
跳转到 运行->运行配置
在 C/C++ 应用程序下边,你将会看到可执行文件名 + Debug (如果没有, 多点几下展开 C/C++应用程序). 选择这个名字(在这里叫 DisplayImage Debug).
现在, 在窗口右侧, 选择 Arguments 选项卡. 填入我们想打开的图片路径 (相对于 workspace/DisplayImage 文件夹路径). 让我们用 HappyLittleFish.png:
点击 Apply 按钮然后再运行. 一个OpenCV 窗口 将会弹出,内部有一张鱼的图片 (或者显示你的那张图片内容).
祝贺你! 你可以使用Eclipse,尽情的开发OpenCV应用程序了.
V2: 使用 CMake+OpenCV with Eclipse (CDT插件)
在 foo 目录中创建一个新文件 helloworld.cpp :
#include <cv.h> #include <highgui.h> int main ( int argc, char **argv ) { cvNamedWindow( "My Window", 1 ); IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 ); CvFont font; double hScale = 1.0; double vScale = 1.0; int lineWidth = 1; cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC, hScale, vScale, 0, lineWidth ); cvPutText( img, "Hello World!", cvPoint( 200, 400 ), &font, cvScalar( 255, 255, 0 ) ); cvShowImage( "My Window", img ); cvWaitKey(); return 0; }
- 在 foo 下创建子目录 build,然后进入该目录
- 在目录中放置文件 CmakeLists.txt 内容如下:
PROJECT( helloworld_proj ) FIND_PACKAGE( OpenCV REQUIRED ) ADD_EXECUTABLE( helloworld helloworld.cxx ) TARGET_LINK_LIBRARIES( helloworld ${OpenCV_LIBS} )
- 运行: cmake-gui .. 然后确保输入 opencv 构建的路径
- 然后点击 configure ,紧接着点击 generate. 如果成功的话就退出 cmake-gui
- 运行 make -j4 (the ``-j4`` 是可选的,只是告诉编译器用 4 个线程来并行编译). 确保构建成
- 启动 eclipse . 让 workspace 放在相同目录下,但不要放到 foo 目录中
- 在项目浏览器中右键,选择导入然后打开 C/C++ 选项,选择 Existing Code as a Makefile Project``
- 为你的项目起个名字,例如 helloworld. 指向已经存在的代码路径 foo\\build (这就是你之前运行 cmake-gui 的地方). 在 “Toolchain for Indexer Settings” 上选择 Linux GCC ,然后点击 Finish.
- 在项目浏览器中右键选择 Properties. 在 C/C++ Build 中设置构建目录,例如从 ${workspace_loc:/helloworld} 到 ${workspace_loc:/helloworld}/build 这是我们要构建的目标地址
- 你也可以修改构建命令,例如改为 make VERBOSE=1 -j4 ,告诉编译器生成详细的符号文件方便用于调试,然后使用 4 个并行线程进行编译
- 搞定!

文章评论