struct IClassifier {
virtual double predict(cv::Mat img) = delete;
virtual ~IClassifier() = default;
};
struct IBGModel { ... virtual ~IBGModel() = default; };
struct PackageDetector {
PackageClassifier(const std::shared_ptr<IClassifier>& classifier,
const std::shared_ptr<IBGModel>& bgModel)
: _classifier(classifier), _bgModel(bgModel) {}
bool hasPackage(const Video& video) {
for (const auto& zone : _bgModel->getStaticZones(video)) {
if (_classifier->predict(zone.getImage()) > THRESHOLD)
return true;
}
return false;
private:
std::shared_ptr<IClassifier> _classifier;
std::shared_ptr<IBGModel> _bgModel;
Introduction
struct IClassifier {
virtual double predict(cv::Mat img) = delete;
virtual ~IClassifier() = default;
};
struct IBGModel { ... virtual ~IBGModel() = default; };
struct PackageDetector {
PackageClassifier(const std::shared_ptr<IClassifier>& classifier,
const std::shared_ptr<IBGModel>& bgModel)
: _classifier(classifier), _bgModel(bgModel) {}
bool hasPackage(const Video& video) {
for (const auto& zone : _bgModel->getStaticZones(video)) {
if (_classifier->predict(zone.getImage()) > THRESHOLD)
return true;
}
return false;
}
private:
std::shared_ptr<IClassifier> _classifier;
std::shared_ptr<IBGModel> _bgModel;
};
Software Design