diff --git a/sdk/core/bee.cpp b/sdk/core/bee.cpp index 3e6d5d1..9016f6c 100644 --- a/sdk/core/bee.cpp +++ b/sdk/core/bee.cpp @@ -112,25 +112,32 @@ template Mat readMatrix(const br::File &matrix) { // Special case matrix construction - if (matrix == "Matrix") { - const int size = matrix.getInt("Size"); - const int step = matrix.getInt("Step", 1); - if (size % step != 0) qFatal("Step does not divide size evenly."); + if (matrix == "Identity") { + int rows = matrix.getInt("rows", -1); + int columns = matrix.getInt("columns", -1); + const int size = matrix.getInt("size", -1); + if (size != -1) { + if (rows == -1) rows = size; + if (columns == -1) columns = size; + } + const int step = matrix.getInt("step", 1); + if (rows % step != 0) qFatal("Step does not divide rows evenly."); + if (columns % step != 0) qFatal("Step does not divide columns evenly."); if (sizeof(T) == sizeof(BEE::Mask_t)) { - const bool selfSimilar = matrix.getBool("SelfSimilar"); + const bool selfSimilar = matrix.getBool("selfSimilar"); - Mat m(size, size, CV_8UC1); + Mat m(rows, columns, CV_8UC1); m.setTo(BEE::NonMatch); - for (int i=0; i(i+j,i+k) = ((selfSimilar && (j == k)) ? BEE::DontCare : BEE::Match); return m; } else if (sizeof(T) == sizeof(BEE::Simmat_t)) { - Mat m(size, size, CV_32FC1); - m.setTo(BEE::NonMatch); - for (int i=0; i(i+j,i+k) = 1; @@ -140,7 +147,7 @@ Mat readMatrix(const br::File &matrix) QFile file(matrix); bool success = file.open(QFile::ReadOnly); - if (!success) qFatal("Unable to open %s for reading.", qPrintable((QString)matrix)); + if (!success) qFatal("Unable to open %s for reading.", qPrintable(matrix.name)); // Check format QByteArray format = file.readLine(); @@ -164,7 +171,7 @@ Mat readMatrix(const br::File &matrix) file.close(); Mat result; - if (isDistance ^ matrix.getBool("Negate")) m.convertTo(result, -1, -1); + if (isDistance ^ matrix.getBool("negate")) m.convertTo(result, -1, -1); else result = m.clone(); return result; } diff --git a/sdk/core/plot.cpp b/sdk/core/plot.cpp index 9e053e4..8eb874f 100644 --- a/sdk/core/plot.cpp +++ b/sdk/core/plot.cpp @@ -118,9 +118,11 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) // Read files const Mat scores = BEE::readSimmat(simmat); - File maskFile(mask); maskFile.insert("Size", scores.rows); + File maskFile(mask); + maskFile.insert("rows", scores.rows); + maskFile.insert("columns", scores.cols); const Mat masks = BEE::readMask(maskFile); - if (scores.size() != masks.size()) qFatal("Simmat/Mask size mismatch."); + if (scores.size() != masks.size()) qFatal("Simmat %i /Mask %i size mismatch.", scores.size(), mask.size()); // Make comparisons QList comparisons; comparisons.reserve(scores.rows*scores.cols); diff --git a/sdk/plugins/ct8.cmake b/sdk/plugins/ct8.cmake index d8ff6d1..3b9d23b 100644 --- a/sdk/plugins/ct8.cmake +++ b/sdk/plugins/ct8.cmake @@ -7,10 +7,16 @@ if(${BR_WITH_CT8}) set(CT8_LIBS optimized ${CT8_LIBRARY_RELEASE} debug ${CT8_LIBRARY_DEBUG}) set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${CT8_LIBS}) + + if(WIN32) + install(FILES ${CT8_DIR_LIB}/libfrsdk-8.6.0.dll + DESTINATION bin) + install(DIRECTORY ${CT8_DIR}/etc DESTINATION models/ct8) + add_definitions(-DCT8_DIR=\"${CT8_DIR}\") + else() install(FILES ${CT8_DIR_LIB}/libfrsdk-8.5.0.so ${CT8_DIR_LIB}/../share/libhasp_linux_x86_64_67109.so ${CT8_DIR_LIB}/../share/libiomp5.so DESTINATION lib) - install(DIRECTORY ${CT8_DIR}/etc DESTINATION models/ct8) - add_definitions(-DCT8_DIR=\"${CT8_DIR}\") + endif() endif() diff --git a/sdk/plugins/ct8.cpp b/sdk/plugins/ct8.cpp index f0dff10..7da0579 100644 --- a/sdk/plugins/ct8.cpp +++ b/sdk/plugins/ct8.cpp @@ -418,9 +418,8 @@ struct CT8Enroll : public UntrainableTransform if (!enroll_succeeded) { dst.file.setBool("FTE"); - return; + dst.m() = Mat(); } - } catch (std::exception &e) { qFatal("CT8Enroll Exception: %s", e.what()); } diff --git a/sdk/plugins/output.cpp b/sdk/plugins/output.cpp index 622e249..83c626a 100644 --- a/sdk/plugins/output.cpp +++ b/sdk/plugins/output.cpp @@ -279,7 +279,7 @@ class rankOutput : public MatrixOutput typedef QPair Pair; int rank = 1; foreach (const Pair &pair, Common::Sort(OpenCVUtils::matrixToVector(data.row(i)), true)) { - if(targetFiles[pair.second].label() == queryFiles[i].label()) { + if(targetFiles[pair.second].getString("Label") == queryFiles[i].getString("Label")) { ranks.append(rank); positions.append(pair.second); scores.append(pair.first);