首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓系统中从OpenCV Mat中获取圆向量?

在安卓系统中从OpenCV Mat中获取圆向量?
EN

Stack Overflow用户
提问于 2011-12-16 04:30:08
回答 3查看 3.5K关注 0票数 1

我无法从Android中的OpenCV垫上获取圆向量值。我想使用这个函数:

代码语言:javascript
复制
HoughCircles(Mat image, Mat circles, int method, double dp, double minDist)

然后我想展示找到的圆圈。我遇到的问题是如何在这个函数中使用circles参数。

那么,问题是:如何从Android中OpenCV的Mat类型获取3元素向量的数量和向量中每个元素的值?

EN

回答 3

Stack Overflow用户

发布于 2014-12-05 05:07:01

一旦你有了你的圈子Mat

代码语言:javascript
复制
for (int i = 0; i < circles.cols(); i++)
{
    double vCircle[] = circles.get(0,i);
    double x = vCircle[0];
    double y = vCircle[1];
    double radius = vCircle[2];
}
票数 2
EN

Stack Overflow用户

发布于 2011-12-16 04:47:29

理想情况下,您可能希望使用vector<Vec3f>列表来处理圆,如下所示:

代码语言:javascript
复制
vector<Vec3f> circles;

// do HoughCircles...

for(size_t i = 0; i < circles.size(); i++)
{
    Vec3f circle = circles[i];
    Point2f center(circle[0] /* x */, circle[1] /* y */);
    float radius = circle[2];

    // use the circle...
}

EDIT :我尝试使用Mat编写代码,发现圆参数似乎以1xN矩阵的形式存储,元素类型为CV_32FC3,其中N是检测到的圆的数量。因此,每一列都包含所需的(x, y, radius)向量。

下面是我用C++编写的一个示例,说明了这一点:

代码语言:javascript
复制
Mat circleImage = imread("circle.png", 0);
Mat circleDisp;

cvtColor(circleImage, circleDisp, CV_GRAY2RGB);

Mat circles;
HoughCircles(circleImage, circles, CV_HOUGH_GRADIENT, 2, circleImage.rows >> 2, 200, 100);

for( size_t i = 0; i < circles.cols; i++ )
{
    Vec3f vCircle = circles.at<Vec3f>(i);

    Point center(cvRound(vCircle[0]), cvRound(vCircle[1]));
    int radius = cvRound(vCircle[2]);
    // draw the circle center
    circle( circleDisp, center, 3, Scalar(0,255,0), -1, 8, 0 );
    // draw the circle outline
    circle( circleDisp, center, radius, Scalar(0,0,255), 3, 8, 0 );
}
namedWindow( "circles", 1 );
imshow( "circles", circleDisp );
waitKey();

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2011-12-16 05:21:13

只需将你的Mat转换为vector:

代码语言:javascript
复制
HoughCircles(Mat image, Mat circles, int method, double dp, double minDist);

vector<Vec3f> myCircles = (vector<Vec3f>)circles;

或者,更简单

代码语言:javascript
复制
HoughCircles(Mat image, vector<Vec3f>& circles, 
          int method, double dp, double minDist);

便笺

这只适用于OpenCV 2.3.1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8526172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档