opencv:C2668:“cvRound”:对重载函数的调用不明确

opencv:C2668:“cvRound”:对重载函数的调用不明确,opencv,Opencv,我正在Qt5.7中使用opencv3.2。以下是我的部分代码: for(int i=0;i<contour[0].size();i++) { if(contour[0][i].x>xmax) xmax = contour[0][i].x; if(contour[0][i].x<xmin) xmin = contour[0][i].x; if(contour[0][i].y>ymax) ymax = contour[0][i].y;

我正在Qt5.7中使用opencv3.2。以下是我的部分代码:

  for(int i=0;i<contour[0].size();i++)
  {
    if(contour[0][i].x>xmax) xmax = contour[0][i].x;
    if(contour[0][i].x<xmin) xmin = contour[0][i].x;
    if(contour[0][i].y>ymax) ymax = contour[0][i].y;
    if(contour[0][i].y<ymin) ymin = contour[0][i].y;
  }
  int step = cvRound(contour[0].size()/16); #this line causes the error

任何人都可以帮助解决这个错误吗?

试着转换回合的参数。你可以在它们前面写float。通过这种方式,您可以帮助编译器找到正确的舍入函数,即接受浮点参数的函数,例如,我通过更改以下内容解决了此问题:

int step = cvRound(contour[0].size()/16);
致:

int step = cvRound(contour[0].size()/16);
int step = cvRound((double)contour[0].size()/16);