OpenCV Flann索引保存和加载不起作用

时间:2014-05-27 23:01:37

标签: opencv flann

我正在尝试这个简单的测试来检查我是否可以将预先填充的索引存储到文件中并在以后加载它们。保存和加载的垫子是不同的。此外,knnSearch在匹配期间抛出段错误。我只在使用LSHIndexParams(用于二进制特征)时才看到这个问题。

void flannSaveAndLoadTest(Mat descriptor) {
    // construct an index
   flann::LshIndexParams lshIndexParams(20,10,2);
   flann::Index kdtree(descriptor, lshIndexParams, cvflann::FLANN_DIST_HAMMING);

   // save descriptors to file
   writeMatToFile(descriptor, "before_index_save.dat");

   // save index to file
   kdtree.save("index.dat");

   // load index from file
   Mat mat = Mat(descriptor.rows, descriptor.cols, CV_8UC1);
   flann::Index kdtree1(mat, flann::SavedIndexParams("index.dat"), cvflann::FLANN_DIST_HAMMING);

   // save loaded mat
   writeMatToFile(mat, "after_index_save.dat");

   // search in this tree
   Mat dists = Mat(descriptor.rows, 2, CV_32S);
   Mat indices = Mat(descriptor.rows, 3, CV_32S);
   kdtree1.knnSearch(descriptor, indices, dists, 2);

}

before_index_save:

%YAML:1.0
mat: !!opencv-matrix
   rows: 60
   cols: 32
   dt: u
   data: [ 10, 157, 16, 137, 81, 214, 178, 39, 45, 5, 74, 1, 172, 30, 38,
       196, 144, 59, 131, 33, 84, 152, 17, 223, 39, 52, 10, 67, 18, 6,
       141, 206, 11, 91, 50, 141, 119, 86, 190, 48, 45, 76, 94, 167, 236,
       30, 183, 228, 246, 125, 151, 231, 197, 144, 49, 236, 39, 125, 138,
       131, 14, 63, 61, 223, 15, 95, 35, 135, 119, 30, 190, 168, 45, 232,
       91, 231, 204, 94, 159, 228, 246, 93, 147, 231, 197, 144, 125, 238,
       38, 60, 143, 135, 14, 55, 57, 213, 10, 149, 16, 129, 81, 214, 178,
       39, 45, 5, 74, 1, 172, 30, 6, 196, 144, 27, 131, 33, 22, 152, 17,
       207, 39, 52, 10, 67, 18, 6, 141, 206, 124, 236, 196, 30, 137, 161,
       70, 207, 210, 179, 169, 24, 99, 225, 105, 158, 9, 226, 104, 26,
       58, 111, 142, 51, 184, 134, 85, 124, 243, 123, 210, 8, 10, 0, 16,
       129, 81, 214, 176, 3, 45, 5, 66, 1, 140, 30, 38, 196, 128, 25,
       131, 1, 4, 152, 17, 196, 7, 20, 26, 67, 2, 4, 13, 206, 244, 172,
       157, 122, 137, 237, 69, 206, 210, 179, 161, 24, 115, 241, 73, 27,
       9, 226, 104, 26, 58, 111, 218, 51, 217, 131, 85, 124, 240, 121,
       198, 34, 197, 36, 157, 103, 128, 46, 103, 184, 112, 162, 43, 88,
       215, 115, 9, 123, 17, 68, 104, 106, 49, 212, 217, 10, 237, 166,
       101, 20, 192, 115, 2, 32, 252, 188, 189, 118, 137, 124, 85, 158,
       179, 247, 166, 24, 223, 247, 75, 59, 129, 214, 236, 26, 56, 103,
       251, 32, 219, 251, 85, 63, 194, 113, 198, 114, 196, 64, 157, 39,
       1, 78, 38, 8, 40, 178, 35, 8, 214, 115, 73, 27, 144, 84, 104, 98,
       96, 212, 217, 8, 197, 178, 65, 20, 0, 115, 3, 34, 11, 91, 50, 141,
       119, 86, 191, 48, 13, 76, 94, 167, 236, 30, 183, 228, 246, 125,

after_index_save:

%YAML:1.0
mat: !!opencv-matrix
   rows: 60
   cols: 32
   dt: u
   data: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 100, 101,
       120, 95, 115, 97, 118, 101, 46, 100, 97, 116, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 0, 0, 152, 169, 51, 241, 97, 127,
       0, 0, 152, 169, 51, 241, 97, 127, 0, 0, 0, 0, 0, 0, 98, 101, 102,
       111, 114, 101, 95, 105, 110, 100, 101, 120, 95, 115, 97, 118, 101,
       46, 100, 97, 116, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
       176, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 188, 45, 1,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0 个答案:

没有答案