我在从矩阵获取数据的动态内存分配中遇到问题
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/