2017-08-01 33 views
0

我试图实现this的答案,但我总是得到错误。请帮忙。openCV没有匹配函数fillPoly

我的代码:

这是我的错误:

jni/jni_detections/jni_face_det.cpp:121:5: error: no matching function for call to 'fillPoly' 
    cv::fillPoly(mask, corner_list, num_points, num_polygons, cv::Scalar(255, 255, 255), line_type); 
    ^~~~~~~~~~~~ 
/home/feli/Development/android/test/dlib/dlib-android/third_party/opencv/jni/include/opencv2/imgproc.hpp:3987:17: note: 
     candidate function not viable: no known conversion from 'int' to 'const int *' for 3rd argument; take the address of 
     the argument with & CV_EXPORTS void fillPoly(Mat& img, const Point** pts, 
             ^
/home/feli/Development/android/test/dlib/dlib-android/third_party/opencv/jni/include/opencv2/imgproc.hpp:4005:19: note: 
     candidate function not viable: no known conversion from 'const Point *[1]' to 'const cv::_InputArray' for 2nd argument 
CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts, 
       ^

我OpenCV的版本是3.1.0

+1

看起来你需要改变'CV ::标量(255)''来简历:: Scalar(255,255,255)' –

+0

或Scalar :: all(255)。 –

+0

“第三个参数没有从'int'到'const int *'的已知转换” - 第三个参数需要是一个指向整数的指针,而不是像你所拥有的整数常量。 |另外'CV_8UC2'对于面具看起来很奇怪。为什么2个频道? –

回答

0

我需要通过为NumPoints参数的指针这样的:

int num_points = 6; 
cv::fillPoly(mask, corner_list, &num_points, 1, cv::Scalar(255), 8); 

感谢@Tim甜

0

看起来你需要改变

cv::Scalar(255) 

cv::Scalar(255,255,255) 
+0

在你的答案中错字。它应该'cv :: Scalar(255,255,255)'而不是'cv:标量(255,255,255)' – eshirima

+0

@eshirima良好的捕获,编辑 –

+2

这种事情不会导致OP得到编译错误。除此之外,'mask'目前(出于某种未知的原因)是一个2通道图像,所以这并不是真的更正确。 –