2013-04-15 64 views
0

我有一個具有50x50尺寸的SparseMat A. 我有另一個10×10的矩陣B. 我想用B添加A(0〜10 x 0〜10)的子矩陣。 如何提取SparseMat的子矩陣。 我喜歡在Mat作爲A(Range(0,10),Range(0,10)),錯誤是「沒有適當的operator()或類型轉換函數的類對象的調用,以指向函數類型」。如何解決這個問題? 謝謝如何提取SparseMat的子矩陣

回答

0

這些函數沒有在OpenCV中實現(很少有操作實際上是在稀疏矩陣上實現的)。

你需要做的是使用提供的SparseMatConstIterator_<T>迭代器遍歷稀疏矩陣,測試非零點的位置是否在你感興趣的子區域中,然後寫入它。 您必須遍歷輸入稀疏矩陣的非零元素,但是您可以在目標矩陣已滿時爲早期退出添加測試。

順便說一下,50x50並不是那麼大。您可以切換到密集矩陣,以便於矩陣處理。我定期在OpenCV中使用1024x1024矩陣。