Exemple #1
0
TEST_F(QueryTests, test_get_current_results) {
  auto hQR = getSerializedHistoricalQueryResultsJSON();
  auto query = getOsqueryScheduledQuery();
  auto put_status = db->Put(kQueries, query.name, hQR.first);
  EXPECT_TRUE(put_status.ok());
  EXPECT_EQ(put_status.toString(), "OK");
  auto cf = Query(query);
  QueryData qd;
  auto query_status = cf.getCurrentResults(qd, db);
  EXPECT_TRUE(query_status.ok());
  EXPECT_EQ(query_status.toString(), "OK");
  EXPECT_EQ(qd, hQR.second.mostRecentResults.second);
}
Exemple #2
0
TEST_F(QueryTests, test_add_and_get_current_results) {
  auto query = getOsqueryScheduledQuery();
  auto cf = Query(query);
  auto s = cf.addNewResults(getTestDBExpectedResults(), std::time(0), db);
  EXPECT_TRUE(s.ok());
  EXPECT_EQ(s.toString(), "OK");
  for (auto result : getTestDBResultStream()) {
    DiffResults dr;
    HistoricalQueryResults hQR;
    auto hqr_status = cf.getHistoricalQueryResults(hQR, db);
    EXPECT_TRUE(hqr_status.ok());
    EXPECT_EQ(hqr_status.toString(), "OK");
    auto s = cf.addNewResults(result.second, dr, true, std::time(0), db);
    EXPECT_TRUE(s.ok());
    DiffResults expected = diff(hQR.mostRecentResults.second, result.second);
    EXPECT_EQ(dr, expected);
    QueryData qd;
    cf.getCurrentResults(qd, db);
    EXPECT_EQ(qd, result.second);
  }
}
//Function executed at each frame
bool segmentationEvaluationModule::run() {
    if(firstTime)
    {
        firstTime = false;
        QByteArray string8bit = this->RoiFileName.toLocal8Bit();
#ifdef __OPENCV3__
        this->RoiPixelLevel = cv::imread(string8bit.data(), cv::IMREAD_GRAYSCALE );
#else
        this->RoiPixelLevel = cv::imread(string8bit.data(), CV_LOAD_IMAGE_GRAYSCALE );
#endif
    }

    if(m_data->postedBestParameters) { //If the best parameters are posted, the job is done
        if(m_setROI) {
            QImage roi, scaledImg;
            ImageTransforms::ImageROI(*m_data->fgImage, roi, m_dx, m_dy, m_w, m_h);
            scaledImg = roi.scaledToWidth(m_wscale, Qt::SmoothTransformation);
            QImage im = ImageTransforms::toGrayscale(scaledImg);
            ImageTransforms::binarize(im);
            getCurrentResults(&im);
        } else
            getCurrentResults(m_data->fgImage);
        return true;
    }

    if(m_data->cycleActivated && m_data->firstOfCycle) { //Store previous data and init cycle and
        NN++;
        if(!first) { //Store previous data
            writeToLog();
            m_data->bestParametersSet = bestParameters;
        }
        previousParameters = m_data->tunedParametersSet;
        if(m_data->tuningEnded) {
            pauseApp();
            m_data->postedBestParameters = true;
        }
        first = false;
        mean_blob = N = mTP = mTN = mFP = mFN = sdTP = sdTN = sdFP = sdFN = 0;
        accTP = accTN = accFP = accFN = 0;
    }


    if(    m_data->fgImage == NULL || m_data->fgImage->isNull()
        || m_data->groundtruthImage == NULL || m_data->groundtruthImage->isNull())
        return true;

    if(m_setROI) {
        QImage roi, scaledImg;
        ImageTransforms::ImageROI(*m_data->fgImage, roi, m_dx, m_dy, m_w, m_h);
        scaledImg = roi.scaledToWidth(m_wscale, Qt::SmoothTransformation);
        QImage im = ImageTransforms::toGrayscale(scaledImg);
        ImageTransforms::binarize(im);
        getCurrentResults(&im);
    } else
        getCurrentResults(m_data->fgImage);

    //Store stats
    accTP += TP; accTN += TN; accFP += FP; accFN += FN;
    N++; //number of frames in the cycle

    mean_blob = MathFunctions::incrementalMean(mean_blob, m_data->blobs.size(), N);
    mTP = MathFunctions::incrementalMean(mTP, TP, N);
    sdTP = MathFunctions::incrementalSigma(mTP, sdTP, TP, N);
    mTN = MathFunctions::incrementalMean(mTN, TN, N);
    sdTN = MathFunctions::incrementalSigma(mTN, sdTN, TN, N);
    mFP = MathFunctions::incrementalMean(mFP, FP, N);
    sdFP = MathFunctions::incrementalSigma(mFP, sdFP, FP, N);
    mFN = MathFunctions::incrementalMean(mFN, FN, N);
    sdFN = MathFunctions::incrementalSigma(mFN, sdFN, FN, N);


    return true;
}
Exemple #4
0
osquery::Status Query::getCurrentResults(osquery::QueryData& qd) {
  return getCurrentResults(qd, DBHandle::getInstance());
}