2015-11-09 107 views
3

我必須實現圖像拼接的SURF算法。正如列出的hereopencv_contrib編譯錯誤:類沒有成員

我嘗試瞭解我找到的解決方案後,我刪除了opencv並開始從頭開始構建。我試圖在安裝過程中包含'opencv_contrib'庫,但它不起作用。

所以我安裝了opencv,然後試着整合軟件包,告訴他軟件包的內容是github repository。在
使-j2 行,我不斷收到以下錯誤。

[ 77%] Building CXX object modules/ximgproc/CMakeFiles/opencv_ximgproc.dir/src/sparse_match_interpolators.cpp.o 
In file included from /home/akshat/OpenCV/opencv-3.0.0/modules/core/include/opencv2/core.hpp:54:0, 
       from /home/akshat/OpenCV/opencv-3.0.0/build/modules/ximgproc/precomp.hpp:40: 
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp: In member function ‘virtual void cv::ximgproc::EdgeAwareInterpolatorImpl::interpolate(cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)’: 
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp:171:52: error: ‘const class cv::_InputArray’ has no member named ‘isVector’ 
    CV_Assert(!from_points.empty() && from_points.isVector() && 
                ^
/home/akshat/OpenCV/opencv-3.0.0/modules/core/include/opencv2/core/base.hpp:389:33: note: in definition of macro ‘CV_Assert’ 
#define CV_Assert(expr) if(!!(expr)) ; else cv::error(cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__) 
           ^
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp:172:52: error: ‘const class cv::_InputArray’ has no member named ‘isVector’ 
       !to_points .empty() && to_points .isVector() && 
                ^
/home/akshat/OpenCV/opencv-3.0.0/modules/core/include/opencv2/core/base.hpp:389:33: note: in definition of macro ‘CV_Assert’ 
#define CV_Assert(expr) if(!!(expr)) ; else cv::error(cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__) 
           ^
make[2]: *** [modules/ximgproc/CMakeFiles/opencv_ximgproc.dir/src/sparse_match_interpolators.cpp.o] Error 1 
make[1]: *** [modules/ximgproc/CMakeFiles/opencv_ximgproc.dir/all] Error 2 
make: *** [all] Error 2 

在此先感謝

+0

現在我很困惑。請填寫信息中的空白處。 1)你爲什麼「刪除」opencv?它之前是否作爲二進制包安裝? 2)詳細說明你的步驟:2.1)你使用什麼版本,從哪裏(如果它不是在官方網站正式發佈)? 2.2)「我試圖在安裝過程中包含'opencv_contrib'庫,但它不起作用。」和「安裝opencv」 - 不確定這意味着什麼。沒有說明的「安裝」意味着從存儲庫安裝預先構建的軟件包... –

+0

... 3)「試圖將軟件包按照說明進行集成」 - 鏈接上的自述文件講述瞭如何構建'opencv' _with_額外的模塊編譯-在。但是你說你只是單獨構建額外的模塊? –

+0

我已經通過執行給定的shell文件來安裝opencv [這裏](https://help.ubuntu.com/community/OpenCV)。然後,當搜索如何安裝opencv_contrib時,我遇到了設置opencv時告訴我安裝它的鏈接。所以,我卸載了opencv。在嘗試使用opencv_contrib模塊進行安裝時,我在構建代碼時遇到了錯誤(我完全不記得它,但是顯示了錯誤,然後它問我是否想創建一個新的Debian軟件包,這又導致了錯誤)。 –

回答

3
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp:171:52: error: ‘const class cv::_InputArray’ has no member named ‘isVector’ 

證明這是版本不兼容。 ximgproc中的代碼需要與cv(具體來說,cv::_InputArray)不同的接口,而不是您的庫存提供的接口。

你這裏的選項有:

  • 嘗試對應於已安裝的cv版本opencv-contrib代碼庫的版本
  • 讓另一個企圖建立對應於當前的opencv-contrib
  • 較新的 cv
+0

我昨晚只下載了這兩個軟件包。據我所知,他們都是最新的 –

+0

「兩個最新」並不意味着「兼容(甚至可行)版本」,特別是如果它是git頭而不是發佈快照。請根據我的要求更新問題,以便我能夠推斷出是否屬實。 –

+0

是的,你是對的,我不使用Github所以不知道我實際上是在一個不同的分支建設。 –

相關問題