c++ - 如何在 OpenCV 中将点传递给 cvFitEllipse2

标签 c++ iphone opencv

我是 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/

相关文章:

c++ - 消除相似函数定义的重复代码

c++ - 我正在用c++创建一个具有撤消和清除功能的计算器。使用堆栈

ios - 从 UILongPressRecognizer 中确定用于 segue 的单元格

c++ - DirectX 渲染和 OMP

c++ - opencv 的 Sysmalloc 错误

iphone - Reminders.app UIScrollView 滚动解释。

iphone - 如何使用CIStarShineGenerator?

c++ - 如何从 cv::Vec3f 转换为 float 类型?

c++ - 实时视频上的 Hough 线变换会导致断点?

c++ - 如何在opencv中绘制带有蒙版图像的矩形?