我如何使用Opencv SparseMatrix

Nig*_*Fox 3 c opencv sparse-matrix

我想在OpenCV中创建一个稀疏矩阵.

我该怎么做这个矩阵的基本操作,如:

放置或访问矩阵元素中的数据.

干杯

cw'*_*cw' 6

使用C++接口可能更合适.请注意,文档[1]中的示例代码缺少模运算,因此失败.

const int dims = 2;
int size[] = {3, 20}; // rows and columns if in two dimensions
SparseMat sparse_mat(dims, size, CV_32F);
for(int i = 0; i < 1000; i++) {
    // create a random index in dims dimensions
    int idx[dims];
    for(int k = 0; k < dims; k++)
        idx[k] = rand() % size[k];

    sparse_mat.ref<float>(idx) += 1.f;
}

cout << "bottom right element @ (2,19) = " << sparse_mat.ref<float>(2,19) << "\n";

Mat dense;
sparse_mat.convertTo(dense, CV_32F);
cout << dense;
Run Code Online (Sandbox Code Playgroud)

给出以下输出

bottom right element @ (2,19) = 19
[9, 23, 13, 26, 18, 13, 18, 15, 13, 17, 13, 18, 19, 6, 20, 20, 12, 15, 15, 15;
 17, 17, 14, 16, 12, 14, 17, 15, 15, 18, 24, 18, 13, 22, 18, 11, 18, 22, 17, 15;
 19, 16, 14, 10, 18, 19, 10, 17, 18, 15, 24, 22, 18, 18, 18, 23, 21, 16, 14, 19]
Run Code Online (Sandbox Code Playgroud)

[1] OpenCV参考手册.版本2.4.3.2012年,p.46.