上一个教程 : 利用 gcc 和 CMake 使用 OpenCV
下一个教程 : 在 Windows 中安装
原作者 | Ana Huamán |
---|---|
兼容性 | OpenCV >= 3.0 |
警告
本教程可能包含过时信息。
先决条件
有两种方法,一种是直接创建项目,另一种是使用 CMake 前提条件
- 已在工作站中安装 Eclipse(只需安装 C/C++ 的 CDT 插件)。可按以下步骤操作
- 访问 Eclipse 网站
- 下载 Eclipse IDE for C/C++ Developers 。根据您的工作站选择链接。
- 安装 OpenCV。如果尚未安装,请访问 此处。
创建项目
- 启动 Eclipse。运行文件夹中的可执行文件即可。
- 转到文件 -> 新建 -> C/C++ 项目
- 为项目选择一个名称(如 DisplayImage)。本例中使用空项目即可。
- 其他一切保持默认。按 “完成”。
- 您的项目(本例中为 DisplayImage)应出现在项目导航器中(通常位于窗口左侧)。
- 现在,让我们使用 OpenCV 添加一个源文件:
- 右键点击 DisplayImage(在导航器中)。新建 -> 文件夹。
- 将文件夹命名为 src,然后点击完成
- 右键点击新创建的 src 文件夹。选择 “新建源文件”:
- 将其命名为 DisplayImage.cpp。点击完成
- 右键点击 DisplayImage(在导航器中)。新建 -> 文件夹。
- 现在,你有了一个带有空 .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;
}
- 我们只差最后一步了: 告诉 OpenCV OpenCV 头文件和库在哪里。为此,请执行以下操作:
- 转到项目->属性
- 在 C/C++ Build 中,点击 Settings(设置)。在右侧,选择 "工具设置 "选项卡。我们将在此输入头文件和库信息:
a. 在 GCC C++ 编译器中,转到包含。在**包含路径(-l)**中,应包含安装 opencv 的文件夹路径。在我们的例子中是 /usr/local/include/opencv。
注意
如果不知道 opencv 文件在哪里,请打开终端并键入pkg-config --cflags opencv
例如,该命令的输出如下
-I/usr/local/include/opencv -I/usr/local/include
b. 现在进入 GCC C++ 链接器,在那里你必须填写两个空格:
首先,在 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
如果你不知道你的库在哪里(或者你只是精神病患者,想确保路径是正确的),请在终端中键入
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)。
在控制台中,你应该得到类似于
如果检查文件夹,里面应该有一个可执行文件。
运行可执行文件
现在,我们有一个可执行文件可以运行了。如果使用终端,我们可能会做如下操作
cd <DisplayImage_directory>
cd src
./DisplayImage ./images/HappyLittleFish.png
假设用作参数的图像位于 <DisplayImage_directory>/images/HappyLittleFish.png 中。我们仍然可以这样做,但还是从 Eclipse 中进行吧:
- 转到运行->运行配置
- 在 C/C++ Application 下,你会看到可执行文件的名称 + 调试(如果没有,请在 C/C++ Application 上单击几次)。选择名称(本例中为 DisplayImage Debug)。
- 现在,在窗口右侧选择 "参数 "选项卡。写入我们要打开的图像文件的路径(相对于工作区/DisplayImage 文件夹的路径)。让我们使用 HappyLittleFish.png:
4. 点击 "应用 "按钮,然后点击 “运行”。此时会弹出一个 OpenCV 窗口,其中包含鱼的图像(或您使用的任何图像)。
- 恭喜您 您已经准备好使用 Eclipse 体验 OpenCV 的乐趣了。
V2: 在 Eclipse 中使用 CMake+OpenCV (插件 CDT)
假设您在名为 foo 的目录中拥有或创建了一个新文件 helloworld.cpp:
#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;
}
- 在 foo 下创建一个 build 目录: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 部分点击右键。选择导入,然后打开 C/C++ 过滤器。选择现有代码作为 Makefile 项目。
- 为项目命名,比如 helloworld。浏览到 Existing Code 位置
foo\build
(你运行 cmake-gui 的位置)。在*"Indexer 设置的工具链 "*中选择 Linux GCC,然后按 “完成”。 - 在 Project Explorer 部分点击右键。选择属性。在 C/C++ 编译下,设置编译目录:从
${workspace_loc:/helloworld}
到${workspace_loc:/helloworld}/build
,因为这是你的编译目录。
a. 你还可以选择修改编译命令:从 make 改为make VERBOSE=1 -j4
这样的命令,这样编译器就会生成详细的符号文件用于调试,并以 4 个并行线程进行编译。 - 完成!