2010-12-20 63 views
2

我有动态内存分配正从矩阵数据问题霍夫圈在C#中,动态内存

Image image_gray = new Image("im1.jpg"); 
Matrix circles = new Matrix(100, 1, 3); 

问题1:我怎样才能找到动态内存,因为我不知道圈的数量?

Emgu.CV.CvInvoke.cvHoughCircles(image_gray, circles, HOUGH_TYPE.CV_HOUGH_GRADIENT, 
    2, 100, 200, 100, 10, 500); 

问题2:现在圆是矩阵[100,3],我怎样才能得到

point center= Round (circle[i][1], circle[i][1]) 

我怎样才能得到

int radius= circle[i][2]; 

又该我的for循环的样子从矩阵中获取数据并且投射应该是point和int。

我尝试已经(不工作/ ERROR)

for (int i=0; i < circles.Rows; i++) 
{ Matrix entry = circles.GetRow(i); 

float x = entry[0]; 
float y = entry[1]; 
float r = entry[2];} // NOT WORKING 

因为代替复制(必需)只(ⅰ)行它复制整个矩阵(圆圈)和浮法X = ......给出错误

No overload for method 'this' takes '1' arguments 

请帮我在这方面

问候


对不起回答我的问题。请给出一些提示动态内存分配和矩阵数据

+0

我认为你需要更具体一点关于你得到什么错误和在哪里。 – 2010-12-20 15:12:49

回答

0

该文件表明,它会增长的矩阵,以适应,但它也与此相矛盾,老实说,我会尝试一个1行1矩阵图像与更多看看它给了你什么。我看到你正在使用Matrix类型 - 我不知道如何转换为cvHoughCircles所需的IntPtr,但它应该是直接迭代每行并提取结果,它们是3个浮点数:(x, Y,R) -

for (int i=0; i < circles.Cols; i++) { 
    Matrix<float> entry = circles.GetRow(i); 
    float x = entry[0]; // guessing here - the doc'n is truly awful 
    float y = entry[1]; 
    float r = entry[2]; 
}