我是 OpenCV 的新手,我有 CGPoints 数组,我需要将这些值传递给 cvFitEllipse2,如何传递这些值?现在,如果我像下面这样通过,我会遇到异常
std::vector<cv::Point> contours;
contours.resize(self.points.count);
for(int i = 0 ; i < self.points.count ; i++)
{
CGPoint point = [self.points objectAtIndex:i];
cv::Point val;
val.x = point.x;
val.y = point.y;
contours[i] = val;
}
CvBox2D rect = cvFitEllipse2(&contours);
最佳答案
试试这个:
std::vector<cv::Point> contours;
contours.resize(self.points.count);
for(int i = 0 ; i < self.points.count ; i++)
{
CGPoint point = [self.points objectAtIndex:i];
cv::Point val;
val.x = point.x;
val.y = point.y;
contours[i] = val;
}
cv::RotatedRect rect = cv::fitEllipse(contours);
之后您可以将 rotatedRect 转换为您需要的类型。
如果您想使用 C API 进行 fitEllipse 调用,您必须根据 http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=fitellipse#fitellipse 将 vector 转换为 CvSeq*
或 CvMat*
关于c++ - 如何在 OpenCV 中将点传递给 cvFitEllipse2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704824/