你的問題都基本上是CMake的問題,而不是cvblob問題。
下面是如何在Ubuntu 12.04 LTS上編譯cvblob的完整示例。它假定OpenCV已成功安裝到系統中。從http://cvblob.googlecode.com/files/cvblob-0.10.4-src.tgz(最新版本在撰稿時的位置),並解壓包
[email protected]:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"
[email protected]:~$
首先得到cvblob來源:
[email protected]:~$ tar xzvf cvblob-0.10.4-src.tgz
cvblob/
cvblob/CMakeLists.txt
cvblob/CMakeScripts/
cvblob/CMakeScripts/Toolchain-mingw32.cmake
cvblob/COPYING
cvblob/COPYING.LESSER
cvblob/ChangeLog
cvblob/Doxyfile
cvblob/README
cvblob/contrib/
cvblob/contrib/cvBlobDLL/
cvblob/contrib/cvBlobDLL/README
cvblob/contrib/cvBlobDLL/TestDLL/
cvblob/contrib/cvBlobDLL/TestDLL/Debug/
cvblob/contrib/cvBlobDLL/TestDLL/ReadMe.txt
cvblob/contrib/cvBlobDLL/TestDLL/Release/
cvblob/contrib/cvBlobDLL/TestDLL/TestDLL.c
cvblob/contrib/cvBlobDLL/TestDLL/TestDLL.vcproj
cvblob/contrib/cvBlobDLL/TestDLL/imgout.png
cvblob/contrib/cvBlobDLL/TestDLL/stdafx.cpp
cvblob/contrib/cvBlobDLL/TestDLL/stdafx.h
cvblob/contrib/cvBlobDLL/TestDLL/targetver.h
cvblob/contrib/cvBlobDLL/TestDLL/test.png
cvblob/contrib/cvBlobDLL/cvblobDLL/
cvblob/contrib/cvBlobDLL/cvblobDLL/Debug/
cvblob/contrib/cvBlobDLL/cvblobDLL/Release/
cvblob/contrib/cvBlobDLL/cvblobDLL/cvblobDLL.cpp
cvblob/contrib/cvBlobDLL/cvblobDLL/cvblobDLL.h
cvblob/contrib/cvBlobDLL/cvblobDLL/cvblobDLL.sln
cvblob/contrib/cvBlobDLL/cvblobDLL/cvblobDLL.suo
cvblob/contrib/cvBlobDLL/cvblobDLL/cvblobDLL.vcproj
cvblob/contrib/cvBlobDLL/cvblobDLL/dllmain.cpp
cvblob/contrib/cvBlobDLL/cvblobDLL/stdafx.cpp
cvblob/contrib/cvBlobDLL/cvblobDLL/stdafx.h
cvblob/contrib/cvBlobDLL/cvblobDLL/targetver.h
cvblob/cvBlob/
cvblob/cvBlob/CMakeLists.txt
cvblob/cvBlob/cvaux.cpp
cvblob/cvBlob/cvblob.cpp
cvblob/cvBlob/cvblob.h
cvblob/cvBlob/cvcolor.cpp
cvblob/cvBlob/cvcontour.cpp
cvblob/cvBlob/cvlabel.cpp
cvblob/cvBlob/cvtrack.cpp
cvblob/cvBlobConfig.cmake.in
cvblob/cvblob.pc.cmake.in
cvblob/doc/
cvblob/samples/
cvblob/samples/Makefile
cvblob/samples/red_object_tracking.cpp
cvblob/samples/red_object_tracking.txt
cvblob/test/
cvblob/test/CMakeLists.txt
cvblob/test/EnterExitCrossingPaths2front_blobs.mpeg
cvblob/test/EnterExitCrossingPaths2front_blobs.txt
cvblob/test/test.cpp
cvblob/test/test.png
cvblob/test/test_random.cpp
cvblob/test/test_tracking.cpp
[email protected]:~$
正如你可以看到有由CMake的需要cvblob/CMakeLists.txt
。
[email protected]:~$ cmake .
CMake Error: The source directory "/home/dev" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
[email protected]:~$
你得到的第一個錯誤,因爲你沒有意識到,<directory path>
是你應該用替換佔位符文本:因爲你說向CMake從錯誤的目錄看你得到第二個錯誤真正的目錄路徑:
[email protected]:~$ cmake . -DOpenCV_DIR=<directory path>
bash: syntax error near unexpected token `newline'
[email protected]:~$
相反,你應該寫:
[email protected]:~$ cmake . -DOpenCV_DIR=/usr/local/
凡/usr/local/
是你SYSTE真實和正確的路徑米
那麼如何正確構建庫?
[email protected]:~$ cd cvblob/
[email protected]:~/cvblob$ mkdir build
[email protected]:~/cvblob$ cd build
[email protected]:~/cvblob/build$ cmake ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
running mkdir -p "/home/dev/cvblob/build/unix-install/" 2>&1
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dev/cvblob/build
[email protected]:~/cvblob/build$ make
Scanning dependencies of target cvblob
[ 11%] Building CXX object lib/CMakeFiles/cvblob.dir/cvblob.o
[ 22%] Building CXX object lib/CMakeFiles/cvblob.dir/cvlabel.o
[ 33%] Building CXX object lib/CMakeFiles/cvblob.dir/cvaux.o
[ 44%] Building CXX object lib/CMakeFiles/cvblob.dir/cvcontour.o
[ 55%] Building CXX object lib/CMakeFiles/cvblob.dir/cvtrack.o
[ 66%] Building CXX object lib/CMakeFiles/cvblob.dir/cvcolor.o
Linking CXX shared library libcvblob.so
[ 66%] Built target cvblob
Scanning dependencies of target test
[ 77%] Building CXX object test/CMakeFiles/test.dir/test.o
Linking CXX executable ../bin/test
[ 77%] Built target test
Scanning dependencies of target test_random
[ 88%] Building CXX object test/CMakeFiles/test_random.dir/test_random.o
Linking CXX executable ../bin/test_random
[ 88%] Built target test_random
Scanning dependencies of target test_tracking
[100%] Building CXX object test/CMakeFiles/test_tracking.dir/test_tracking.o
Linking CXX executable ../bin/test_tracking
[100%] Built target test_tracking
[email protected]:~/cvblob/build$ sudo make install
[sudo] password for dev:
[ 66%] Built target cvblob
[ 77%] Built target test
[ 88%] Built target test_random
[100%] Built target test_tracking
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/share/cvblob/cvBlobConfig.cmake
-- Installing: /usr/local/lib/pkgconfig/cvblob.pc
-- Installing: /usr/local/include/cvblob.h
-- Installing: /usr/local/lib/libcvblob.so
-- Removed runtime path from "/usr/local/lib/libcvblob.so"
[email protected]:~/cvblob/build$
cvbloblibs *非常*舊,並使用過時的c-api。也許你最好不要使用它,而是使用C++ api和[findContours](http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#findcontours) – berak