我想将随机 OpenCV 描述符提取器生成的描述符矩阵存储为数据库实体。
假设 desc 是描述符矩阵
String s = (desc.reshape(1,1)).dump;
为了从数据库中取回矩阵,我做了
Mat desc = new Mat(numberOfRows * numberOfCols * numberOfChannels, 1, type);
/* I stored number of rows and number of cols and type of the matrix separately and pass them to the function that returns the matrix */
String ss[] = s.substring(1, s.length -1).split(", ");
int[] temp = new int[sss.length ];
for(int i = 0; i < sss.length; i++) temp [i] = Integer.parseInt(sss[i]);
MatOfInt int_values = new MatOfInt(temp);
int_values.convertTo(desc, type);
desc = fingerprint.desc(numberOfChannels, numberOfRows);
这工作正常,但需要很多时间,尤其是 .split 方法和涉及 parseInt 的循环,因为矩阵中有大量元素(在我的情况下约为 100k)。
我的问题是:有没有更好的方法来做到这一点?
我的第二个问题是,来吧,分配一个 100K 长的字符串数组并解析它(考虑到字符串实际上最多 2-3 个字符)不应该真的需要 2 秒,是因为 Android/Java 很慢