首先到google code(https://code.google.com/p/cvblob/)下载cvblob的源代码,由于使用的操作系统为windows7,因此我们在版本列表中选择cvblob-0.10.4-src.zip下载。解压zip文件后,使用cmake生成vs解决方案,在生成过程中,可能会报如下错误:
CMake Error at cvBlob/CMakeLists.txt:20 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
问题描述比较长,归纳为一句话就是:”没有找到OpenCVConfig.cmake文件“。因此我们只需要在cvblob的CMakeLists.txt中将opencv的OpenCVConfig.cmake添加进去。在cvblob的cvblob的CMakeLists.txt中添加set(OpenCV_DIR E:/mylibs/opencv2.4.2/build),如下:set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeScripts)
set(OpenCV_DIR G:/mylibs/opencv2.4.2/build)
注意E:/mylibs/opencv2.4.2/build为OpenCVConfig.cmake的路径。
生成vs的解决方案后,我们使用vs2008打开cvBlob.sln,然后编译解决方案下的所有工程。编译时可能会报如下错误:
Error29fatal error LNK1104: cannot open file '..\lib\Debug\cvblob.lib'test
Error30fatal error LNK1104: cannot open file '..\lib\Debug\cvblob.lib'test_random
Error33fatal error LNK1104: cannot open file '..\lib\Debug\cvblob.lib'test_tracking
解决方案如下:https://code.google.com/p/cvblob/issues/detail?id=34
I got the same error in visual studio 2010. The problem is that visual studio does not create a lib file unless functions are explicitly defined as dllexport functions.
To fix this add the following to cvblob.h:
#define EXPORT __declspec (dllexport)
In the extern "C" block, add the word EXPORT to each function.
For example:
EXPORT double cvContourPolygonArea(CvContourPolygon const *p);
As soon as you add at least one EXPORT keyword the .lib file will be created. You should add EXPORT to all the functions in the extern "C" block though, otherwise you will get linkage errors for the functions you didn't add EXPORT for.
This fix was based on the following MSDN post: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/15e4fc47-68b5-4798-9e5d-d6d72da1f631/
编译成功!
运行test.exe程序,结果如下: