2015-12-21 21 views
0

我想根據其位置對視頻中的連接組件進行分類。我正在使用opencv 3中的connectedComponentsWithStats函數。我正在嘗試訪問來自1x5矩陣的統計矩陣的值。當我使用以下代碼時,我成功訪問連接組件的區域。連接組件訪問矩陣值

connectedComponentsWithStats(median_difference3, labels, stats, centroids, 8, CV_16U); 

int area= stats.at<int>(0,4); 
cout << area << endl; 

當我嘗試使用

int x= stats.at<int>(0,0); 

所有值來訪問矩陣的第一個值我得到的是零。

只是爲了確認當我輸出完整的統計矩陣時,矩陣的0,0位置的值不總是爲零,因此他們應該改變區域矩陣的相同方式。統計矩陣中的值也總是整數。

如果你能看到我做錯了什麼,我將不勝感激!

+1

這似乎是正確的。你可以設置一個[mcve],這樣我們可以重現你的問題? – Miki

+0

我剛剛意識到的是在幀中沒有連接組件時的1x5向量。如果矩陣是2 x 5矩陣,第一行包含默認值,第二行包含有關CC的有用信息。這就是爲什麼我一直得到零。你知道我如何訪問矩陣中的第二行,因爲並不總是有兩行和stats.at (1,0);不管用。 – user5608415

+0

'if(stats.rows> 1){cout << stats.at (1,0);}' – Miki

回答

0

統計的第一行指的是背景:

doc

statsv - 輸出爲每個標籤的統計,包括背景標籤

你可以簡單地檢查stats的行數,以知道你是否有一些前景補償onent,或檢查由connectedComponentsWithStats返回的標籤數量。