2016-07-12 110 views
0

我已經在Ubuntu上安裝了OpenCV3.1,並在Ubuntu上安裝了這個link。對於短,建庫時,我已經過了這個標誌OpenCV 3.1 - 無法找到opencv_contrib的庫

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..

已通過OPENCV_EXTRA_MODULES_PATH標誌。然後,我想嘗試從opencv_contribsfm模塊C++,但得到這個錯誤:

/tmp/ccHDBnbF.o: In function `main': cam_motion.cpp:(.text+0x999): undefined reference to `cv::sfm::reconstruct(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, cv::_InputOutputArray const&, cv::_OutputArray const&, bool)' cam_motion.cpp:(.text+0xb5a): undefined reference to `cv::viz::Viz3d::Viz3d(cv::String const&)' cam_motion.cpp:(.text+0xba7): undefined reference to `cv::viz::Viz3d::setBackgroundColor(cv::viz::Color const&, cv::viz::Color const&)' cam_motion.cpp:(.text+0xbc0): undefined reference to `cv::viz::Viz3d::registerKeyboardCallback(void (*)(cv::viz::KeyboardEvent const&, void*), void*)' cam_motion.cpp:(.text+0xe2c): undefined reference to `cv::viz::Viz3d::wasStopped() const' cam_motion.cpp:(.text+0xeaf): undefined reference to `cv::Mat::eye(int, int, int)' cam_motion.cpp:(.text+0xfd4): undefined reference to `cv::viz::WCube::WCube(cv::Point3_<double> const&, cv::Point3_<double> const&, bool, cv::viz::Color const&)' cam_motion.cpp:(.text+0x1001): undefined reference to `cv::viz::Widget::setRenderingProperty(int, double)'

我想這是一個連接問題。

什麼問題,我該如何解決這個問題?

回答

0

您是否下載OpenCV contrib包並將其放置在指定位置?如果沒有,那麼從here

下載它然後把它特定的文件夾內,同時通過CMake編譯它給出的路徑(絕對路徑),直到模塊文件夾。然後嘗試再次構建它。

如果您仍然遇到任何問題,請留下有關它的詳細信息。

+0

我在將OpenCV安裝到我的Mac中時也使用了類似的方法,並且找不到對應庫(如libopencv_viz)。將再試一次。 – Hilman

+0

解決了這個問題。事實證明,要使用SfM,我需要用-D WITH_VTK = ON構建OpenCV(當然在系統中安裝了vtk庫)。系統也需要安裝SfM所需的依賴關係。 – Hilman