blob: 911075470ba9fb268edd75e4e4c3a0575f6b6197 [file] [log] [blame]
#pragma once
// STL
#include <condition_variable>
#include <cstdint>
#include <memory>
#include <mutex>
#include <thread>
#include <vector>
#include <map>
// Filters
#include "pluginInference.h"
// AvFrame
extern "C" {
#include <libavutil/frame.h>
}
// Plugin
#include <plugin/jamiplugin.h>
#include <plugin/mediahandler.h>
// Frame scaler for frame transformations
#include <framescaler.h>
namespace jami
{
class PluginProcessor
{
public:
PluginProcessor(const std::string &dataPath);
//~PluginProcessor();
void initModel();
/**
* @brief feedInput
* Takes a frame and feeds it to the model storage for predictions
* @param frame
*/
void feedInput(const cv::Mat &frame);
/**
* @brief computePredictions
* Uses the model to compute the predictions and store them in
* computedPredictions
*/
void computePredictions();
void printMask();
void drawMaskOnFrame(cv::Mat &frame, cv::Mat &frameReduced, std::vector<float>computedMask, int lineSize);
// Output predictions
std::vector<float> computedMask;
std::vector<float> computedMask1;
std::vector<float> computedMask2;
std::vector<float> computedMask3;
cv::Mat backgroundImage;
cv::Size kSize;
float scaleX = 0;
float scaleY = 0;
PluginInference pluginInference;
std::string backgroundPath;
private:
// Frame
cv::Mat frame;
};
} // namespace jami