2016-02-03 75 views
1

轉義範圍後,我得到了損壞的堆錯誤消息。調試斷言在debug_heap.cpp在_CrtlsValidHeapPointer(塊)失敗堆已損壞opencv

#include "opencv2\opencv.hpp" 
#include "opencv2\nonfree\features2d.hpp" 

using namespace cv; 

int main(int argc, char* argv[]) { 

    Mat img = imread(argv[1]); 

    SurfFeatureDetector detector(400); 

    vector<KeyPoint> keypoints; 

    detector.detect(img, keypoints); 

    return 0; 
} 

EDIT 固定。問題在於鏈接。我使用了visual studio 2015和opencv 2.49 x86 vc10。 vc10適用於visual studio 2010.在visual studio 2010中運行一些程序並且工作得很好。

+0

爲什麼不在這裏提交新問題https://github.com/Itseez/opencv/issues?順便說一句,你應該檢查img.data爲非空,因爲imread可能會失敗。 –

+0

執行錯誤檢查,並使用調試器 – Drop

+0

@SergeiNikulov爲什麼這個新生會打擾高度專業的OpenCV程序員團隊?他的代碼中有99.99%的機會出現錯誤。 – Drop

回答

1

在轉義範圍後,我收到了錯誤的堆錯誤消息。

如果您確定錯誤發生在}的確切位置,那麼在代碼中這不是問題。它只是你沒有正確鏈接OpenCV。 x64與x86之間不匹配或C++運行時庫不匹配。所以只要確保一切都連接好。

+0

完全沒有。這隻意味着他的程序中存在未定義的行爲,並且一切都可能發生。 – Drop

+0

我相信它發生在},因爲我包圍了不同範圍內的內部代碼{},並且在} –

+0

@Drop失敗:我知道我的假設不是基於真實的線索。但99%的時間,有些人面對OpenCV這個錯誤,它是從不好的鏈接 –