在vc2010中創建的dll中調用findContours()函數,系統崩掉!
代碼如下:
vector<vector<cv::Point> > contours;
vector<Vec4i> hierarchy;
findContours(bin, contours, hierarchy,
CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE );
分析opencv源代碼,跟蹤測試
進入工程:opencv_imgproc
發現findContours函數 是調用 _findContours函數來實現的,跟蹤進去,發現contours.resize(total) 就會失敗崩潰,應該是系統DLL調用配置問題,進一步不知道原因了…
解決方案:
直接將:_findContours( Mat& image, vector<vector<Point> >& contours,
vector<Vec4i>* hierarchy, int mode, int method, Point offset )
提出來,放到dll中改一個名字,再調用OK了。
呵呵,用了一天時間才解決了問題,開始一直找動態庫配置原因,後面又重新下載源代碼編譯跟蹤分析出問題源頭,先臨時解決了。
應該還有更好的解決方案,應該是參數傳遞問題,有牛人給些建議