bool Faceanomaly1Plugin::init()
{
    faceThresholdParameter ="face threashold";
    faceThresholdValue = "3";
    threasholdFaceCount =3;
    createStringParam(faceThresholdParameter,faceThresholdValue,true);

    createFrameViewer("Output");

    return true;
}
inline void createStringEventData (KmsMediaEventData &_return,
                                   const std::string &data) throw (KmsMediaServerException)
{
  createStringParam ( (KmsMediaParam &) _return, data);
}
inline void createStringInvocationReturn (KmsMediaInvocationReturn &_return,
    const std::string &data)
throw (KmsMediaServerException)
{
  createStringParam ( (KmsMediaParam &) _return, data);
}
bool LeftbagdetectorPlugin::init()
{

    QDateTime timestamp = QDateTime::currentDateTime();

    //connect(&blobPositionReader, SIGNAL(generateEvent(QList<DetectedEvent>)), this, SLOT(onCaptureEvent(QList<DetectedEvent>)));
    //connect(&blobPositionReader, SIGNAL(generateEvent(QList<DetectedEvent>)), &blobDistanceNode, SLOT(captureEvent(QList<DetectedEvent>)));
    //connect(&blobPositionReader, SIGNAL(generateEvent(QList<DetectedEvent>)), &blobSpeedNode, SLOT(captureEvent(QList<DetectedEvent>)));
    connect(this, SIGNAL(generateEvent(QList<DetectedEvent>)), &blobDistanceNode, SLOT(captureEvent(QList<DetectedEvent>)));
    connect(this, SIGNAL(generateEvent(QList<DetectedEvent>)), &blobSpeedNode, SLOT(captureEvent(QList<DetectedEvent>)));

    connect(&blobDistanceNode, SIGNAL(generateEvent(QList<DetectedEvent>)), &distanceChangeNode, SLOT(captureEvent(QList<DetectedEvent>)));
    connect(&blobDistanceNode, SIGNAL(generateEvent(QList<DetectedEvent>)), &leftBagNode, SLOT(captureEvent(QList<DetectedEvent>)));
    connect(&distanceChangeNode, SIGNAL(generateEvent(QList<DetectedEvent>)), &leftBagNode, SLOT(captureEvent(QList<DetectedEvent>)));
    connect(&blobSpeedNode, SIGNAL(generateEvent(QList<DetectedEvent>)), &leftBagNode, SLOT(captureEvent(QList<DetectedEvent>)));
    connect(&leftBagNode, SIGNAL(generateEvent(QList<DetectedEvent>)), &leftBagWriterNode, SLOT(captureEvent(QList<DetectedEvent>)));

    connect(this, SIGNAL(generateEvent(QList<DetectedEvent>)), &blobWriterNode, SLOT(captureEvent(QList<DetectedEvent>)));

    //connect(&blobDistanceNode, SIGNAL(generateEvent(QList<DetectedEvent>)), this, SLOT(onCaptureEvent(QList<DetectedEvent>)));
    //connect(&distanceChangeNode, SIGNAL(generateEvent(QList<DetectedEvent>)), this, SLOT(onCaptureEvent(QList<DetectedEvent>)));
    //connect(&blobSpeedNode, SIGNAL(generateEvent(QList<DetectedEvent>)), this, SLOT(onCaptureEvent(QList<DetectedEvent>)));
    connect(&leftBagNode, SIGNAL(generateEvent(QList<DetectedEvent>)), this, SLOT(onCaptureEvent(QList<DetectedEvent>)));
    //connect(this, SIGNAL(generateEvent(QList<DetectedEvent>)), this, SLOT(onCaptureEvent(QList<DetectedEvent>)));

    //QDir dir(QCoreApplication::instance()->applicationDirPath());
    QDir dir(QDir::home());
    if(!dir.exists("NoobaVSS")){
        dir.mkdir("NoobaVSS");
    }
    dir.cd("NoobaVSS");
    if(!dir.exists("data")){
        dir.mkdir("data");
    }
    dir.cd("data");
    if(!dir.exists("text")){
        dir.mkdir("text");
    }
    dir.cd("text");

    output_file = dir.absoluteFilePath(timestamp.currentDateTime().toString("yyyy-MM-dd-hhmm") + "-abobjects.txt");

    //createStringParam("input_file",input_file,false);
    createStringParam("output_file",output_file,true);

    createDoubleParam("still_object_speed_threshold",DEFAULT_STILL_OBJECT_SPEED_THRESHOLD,200.0,0.0);
    createDoubleParam("leaving_object_speed_threshold",DEFAULT_LEAVING_OBJECT_SPEED_THRESHOLD,200.0,0.0);
    createDoubleParam("distance_change_rate_threshold",DEFAULT_DISTANCE_CHANGE_RATE_THRESHOLD,200.0,0.0);
    createDoubleParam("split_min_limit",DEFAULT_SPLIT_MIN_LIMIT,500,0.0);
    createDoubleParam("split_max_limit",DEFAULT_SPLIT_MAX_LIMIT,500.0,0.0);


    //blobPositionReader.openFile(input_file);
    leftBagWriterNode.openFile(output_file);

    blobWriterNode.openFile(dir.absoluteFilePath(timestamp.currentDateTime().toString("yyyy-MM-dd-hhmm") + "-blobs.txt"));

    leftBagNode.setStillObjectSpeedThreshold(DEFAULT_STILL_OBJECT_SPEED_THRESHOLD);
    leftBagNode.setLeavingObjectSpeedThreshold(DEFAULT_LEAVING_OBJECT_SPEED_THRESHOLD);
    leftBagNode.setDistanceChangeRateThreshold(DEFAULT_DISTANCE_CHANGE_RATE_THRESHOLD);
    leftBagNode.setSplitMinLimit(DEFAULT_SPLIT_MIN_LIMIT);
    leftBagNode.setSplitMaxLimit(DEFAULT_SPLIT_MAX_LIMIT);

    debugMsg("Left Bag Detector Plugin Initialized");

    return true;
}