1

特定のシナリオでハフ線を使用しようとしていますが、findContours メソッドで一致する関数エラーが発生しません。

コード

...
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

4

2 に答える 2

1

交換したら治りました

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

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

ただし、findContour の定義には、Map 型にマップされる InputOutputArray 型の最初の引数があり、クローン メソッドも Mat 型を返すことを考えると、少し奇妙です。

于 2013-08-17T14:18:36.220 に答える
0

ここでの問題は、一時をMat::clone()返し、一時への参照を取得できないことだと思います。のコンストラクター_OutputArrayMat&. 最初に変数に割り当てると機能します(回答に示されているように)。

于 2013-10-16T14:54:35.887 に答える