2013-03-28 115 views
0

我想在Opencv2.4.4中使用VS2010express(C++)中的findContours函數代碼如下。 Mat canny_output; std :: vector>輪廓;在opencv findContours與「System.AccessViolationException」

/// Detect edges using canny 
Canny(src_gray, canny_output, 100, 200, 3); 
/// Find contours 
threshold(canny_output,canny_output,0,255,THRESH_BINARY); 

findContours(canny_output, contours, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE); 

但程序將總是在系統錯誤System.AccessViolationException的最後一行觸發斷點。

任何人有任何想法?

回答

0

建議:

  1. 確保contoursvector< vector<Point> >
  2. Canny操作就可以直接喂邊緣findContour..why你在做一個閾值後?也就是說,閾值爲零...跳過該行...因爲canny的輸出是二進制圖像。
  3. 確保cannny_output也是一個灰色的圖像。

編輯:嘗試這個..although這給外部contours..check閹findcontour是工作會有或不..

findContours(canny_output,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE,Point())

+0

我已經定義的輪廓作爲矢量<矢量>,後我刪除閾值線,錯誤成爲「堆被摧毀」,還有什麼想法? – 2013-03-28 03:40:21

+0

註釋掉findContours並嘗試imshow(「CANNY」,canny_output)...檢查邊緣檢測後的圖像。 – 2013-03-28 03:55:29

+0

Canny後的圖像可以正常輸出,但它在findContours – 2013-03-28 04:13:34