我在从矩阵获取数据的动态内存分配中遇到问题

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循环应该是点和整型。

我已经尝试过(不工作/错误)

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


因为不是复制(必需)仅复制(i)行,而是复制整个矩阵(圆圈)并浮点x = ......给出了错误

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


请在这方面帮助我

问候



很抱歉回答我的问题。请给一些提示动态内存分配和矩阵数据

最佳答案

该文档表明它将增长矩阵以使其适合,但也矛盾的是,老实说,我会在具有更多圆圈的图像上尝试1行1 col矩阵,然后看看它能为您提供什么。我看到您使用的是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];
}

关于c# - C#中的Hough Circle,动态内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4490346/

10-11 07:40