2013-08-17 66 views
1

我試圖使用霍夫線在特定的情況下,並不斷得到了findContours方法OpenCV的findContour:沒有匹配的功能

代碼

... 
Mat bw, hsvdst; 
... 
bw = Mat::zeros(hsvdst.rows, hsvdst.cols, CV_8UC1); 
vector<vector<Point> > contours; 
vector<Vec4i> hierarchy; 
findContours(bw.clone(), contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); 

錯誤

error: no matching function for call to ‘findContours(cv::Mat, st 
d::vector<std::vector<cv::Point_<int> > >&, std::vector<cv::Vec<int, 4> >&, cv::<anonymous enum>, cv::<anonymous enum>) 

note: candidates are: 
void cv::findContours(cv::InputOutputArray, cv::OutputArrayOfArr 
ays, cv::OutputArray, int, int, cv::Point) 
note: no known conversion for argument 1 from ‘cv::Mat’ to ‘cv::Inpu 
tOutputArray {aka const cv::_OutputArray&}’ 

沒有匹配的功能錯誤請協助,我不確定我在這裏錯過了什麼。

環境:OpenCV 2.4.6.1; Eclipse CDT的,Ubuntu的12.04.2

+0

編譯器非常體面地告訴你確切的問題是什麼。 '注意:參數1從'cv :: Mat'到'cv :: Inpu tOutputArray {aka const cv :: _ OutputArray&}' – Mahesh

+0

我的想法是OutputArray映射到Mat類型。我需要一個明確的轉換 – Damilola

回答

1

,我通過與

Mat m = bw.clone(); findContours(m, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); 

更換

findContours(bw.clone(), contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); 

這是一個有點怪異,雖然考慮到findContour的definition必須是類型的第一個參數InputOutputArray映射到Map類型,clone方法也返回Mat類型。

0

我認爲這裏的問題是Mat::clone()返回一個臨時的,你不能得到一個臨時的引用。 _OutputArray的構造函數需要Mat&。首先將它分配給一個變量(如你在答案中所示)。