【问题标题】:No matching function for call to 'ellipse'调用“椭圆”没有匹配的函数
【发布时间】:2016-08-19 23:40:52
【问题描述】:

我正在使用 OpenCV 并检测用户的身体。但我得到了错误:

没有匹配的函数调用'ellipse'

该函数存在于我的框架中,但它仍然显示错误:

// Body Detection

std::vector<cv::Rect> body;
cascade.detectMultiScale(mat, body, 1.1, 2, 18|9, cv::Size(3,7));

std::vector<cv::Rect>::const_iterator rs = body.begin();

for(int j = 0; j<body.size(); j++){
    cv::Point center(body[j].x + body[j].width * 0.5, body[j].y+ + body[j].height * 0.5);
    cv::ellipse(mat, center, Size(body[j].width * 0.5 + body[j].height * 0.5), 0, 0, 360, cv::Scalar(255, 0 , 255), 4, 8, 0);

}

【问题讨论】:

  • 您可能在 Size 构造函数中缺少逗号。也许你需要cv::Size
  • 谢谢。它解决了我的问题。但我没有得到正确的结果。差远了。我做得对吗?
  • 什么不正确?
  • 检测。即使我只有全脸进入相机,它也会被检测到它实际上不应该被检测到。我只想检测全身。
  • 仅凭此信息无法回答。我建议提出另一个问题,其中包含更多代码细节以及一些预期和实际结果的图像

标签: ios opencv


【解决方案1】:

错误在这一行:

cv::ellipse(mat, center, Size(body[j].width * 0.5 + body[j].height * 0.5), 0, 0, 360, cv::Scalar(255, 0 , 255), 4, 8, 0);

cv::ellipse 需要 cv::Size 对象,而您传递的是不同的 Size 对象。同样cv::Size 的构造函数需要两个参数widthheight。您可能缺少逗号来划分参数。

所以代码应该是这样的:

cv::ellipse(mat, center, cv::Size(body[j].width * 0.5, body[j].height * 0.5), 0, 0, 360, cv::Scalar(255, 0 , 255), 4, 8, 0);

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2021-09-21
    • 2016-11-23
    • 2016-08-08
    • 2014-03-12
    • 2015-03-17
    相关资源
    最近更新 更多