如何提取SparseMat的子矩阵

时间:2013-04-15 08:48:42

标签: opencv

我有一个50x50尺寸的SparseMat A. 我有另一个10x10尺寸的矩阵B. 我想用B添加A(0~10 x 0~10)的子矩阵。 如何提取SparseMat的子矩阵。 我确实喜欢在Mat中作为A(范围(0,10),范围(0,10)),错误是“没有适当的操作符()调用类类型的对象或者指向函数类型的转换函数” ”。如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:0)

这些函数未在OpenCV中实现(很少有操作实际上是在稀疏矩阵上实现的。)

您需要做的是使用提供的SparseMatConstIterator_<T>迭代器遍历稀疏矩阵,测试非零点的位置是否在您感兴趣的子区域中,然后编写它。 您必须遍历输入稀疏矩阵的非零元素,但是当目标矩阵已满时,您可以为早期退出添加测试。

顺便说一句,50x50不是那么大。您可以切换到密集矩阵,以便更轻松地处理矩阵。我定期在OpenCV中使用1024x1024矩阵。