2010-12-20 59 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]; 
}