sparsemat 函数
在高维直方图绘制中使用,接省内存
OpenCV中一般一张图片在内存中用Mat来表述及管理,Mat内部申请一块类似与数组的内存用于存储图片中的每个像素的值即为稠密矩阵,但是有时在矩阵中其值为零的元素远远多于非为零的元素个数即稀疏矩阵,如何此时还使用Mat进行存储 显然非常浪费空间,为了应对此中场景,OpenCV使用SparseMat类来应对稀疏矩阵场景,稀疏矩阵内部内存为一个hash表,其值为0的元素其实并没有占用内存空间,只存储其值为非零的元素,值为0的元素不占用内存空间,同时为了保证查找速度快 内部使用一个hash表进程存储。下面看来自于“Learning OpenCV3”中一段对cv::SparseMat优劣势说明
SparseMat() 默认构造函数
SparseMat(int dims, const int* _sizes, int _type)
使用数组参数构造函数,与mat类似
dims,为维度,_sizes为数组,表示每个维度大小,数组大小与维度一致。
_type代表的是数据类型,如:CV_8U 、CV_16U 、CV_32F等
parseMat(const SparseMat& m) 拷贝函数
explicit SparseMat(const Mat& m) 参数为Mat的拷贝函数,可以利用此根据mat生成一个SparseMat