创建 OpenCV 应用程序的方法有很多种,在 Windows 下可以在 Visual Studio 2005 里很方便地创建 OpenCV 应用程序,也可以用 MinGW,在 Linux 上自然也有不同的方法。
如果我们的工作需要考虑到跨平台的特性,那我们应该怎么办呢?如果写出来的代码能够直接在不同的平台下编译,那将省去很多麻烦!下面就介绍一下创建跨平台的 OpenCV 应用程序的基本思路与步骤。
参考资源:http://opencv.willowgarage.com/wiki/Getting_started
我们通过下面这个简短的程序来测试一下 CMake 能否和 OpenCV 一起有效地工作。
新建一个名为 Test.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; }
再创建一个名为 CMakeLists.txt 的文件(里面的文件名和生成的可执行文件名需要根据实际情况进行修改),放入下面的内容:
PROJECT( pr )
FIND_PACKAGE( OpenCV REQUIRED )
INCLUDE_DIRECTORIES( ${OPENCV_INCLUDE_DIR} )
ADD_EXECUTABLE( test test.cpp )
TARGET_LINK_LIBRARIES( test ${OPENCV_LIBRARIES} )
从命令终端 ( shell ) 进入 test.cpp 所在的目录,如果是 Linux ,输入下面的命令:
$> cmake . $> make
如果是 Windows,用下面的命令:
$> CMakeSetup . $> make
选择适当的编译器(Windows 下可以选择生成 MinGW makefile 或是 MSYS makefile),生成相应的 makefile,然后再到这个 makefile 所在的目录里 make 一把。
如果能顺利生成一个名为 Test 的可执行文件,则我们成功了!现在编写的 OpenCV 程序可以在任何平台上跑了。
PS:在 Windows 下,如果生成的是 MSYS makefile,则需要从 MSYS 里进行到该目录用命令 make 进行编译;如果生成的是 MinGW makefile,则可以从 Windows 的 cmd 里进行该目录运行 make 编译指令。