Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
CalcHistogramCV.h
1#pragma once
2
3#include "Module.h"
4#include <boost/serialization/vector.hpp>
5#include "declarative/PropertyMacros.h"
6
7/*
8ROI - optional
9Mask - optional
10numBins - number of bins
11https://docs.opencv.org/2.4/modules/imgproc/doc/histograms.html?highlight=calchist#calchist
12
13depth has to be either CV_8U or CV_32F
14*/
15
17{
18public:
20 {
21 bins = 8;
22 }
23
25 {
26 bins = _bins;
27 }
28
30 {
31 return ModuleProps::getSerializeSize() + sizeof(bins) + sizeof(roi) + sizeof(maskImgPath) + maskImgPath.length();
32 }
33
34 // All the properties can be updated during run time using setProps
35 int bins;
36 vector<int> roi;
38
39 // ============================================================
40 // Property Binding for Declarative Pipeline
41 // ============================================================
42 template<typename PropsT>
43 static void applyProperties(
44 PropsT& props,
45 const std::map<std::string, apra::ScalarPropertyValue>& values,
46 std::vector<std::string>& missingRequired
47 ) {
48 apra::applyProp(props.bins, "bins", values, false, missingRequired);
49 apra::applyProp(props.maskImgPath, "maskImgPath", values, false, missingRequired);
50 // Note: roi (vector<int>) is not supported via scalar properties - use programmatic API
51 }
52
53 apra::ScalarPropertyValue getProperty(const std::string& propName) const {
54 if (propName == "bins") return static_cast<int64_t>(bins);
55 if (propName == "maskImgPath") return maskImgPath;
56 throw std::runtime_error("Unknown property: " + propName);
57 }
58
59 bool setProperty(const std::string& propName, const apra::ScalarPropertyValue& value) {
60 if (propName == "bins") { bins = static_cast<int>(std::get<int64_t>(value)); return true; }
61 if (propName == "maskImgPath") { maskImgPath = std::get<std::string>(value); return true; }
62 throw std::runtime_error("Unknown property: " + propName);
63 }
64
65 static std::vector<std::string> dynamicPropertyNames() {
66 return {"bins", "maskImgPath"};
67 }
68
69private:
71
72 template<class Archive>
73 void serialize(Archive &ar, const unsigned int version)
74 {
75 ar & boost::serialization::base_object<ModuleProps>(*this);
76
77 ar & bins;
78 ar & roi;
79 ar & maskImgPath;
80 }
81};
82
83class CalcHistogramCV : public Module {
84public:
85
87 virtual ~CalcHistogramCV() {}
88
89 virtual bool init();
90 virtual bool term();
91
92 void setProps(CalcHistogramCVProps& props);
94
95protected:
96 bool process(frame_container& frames);
97 bool processSOS(frame_sp& frame);
98 bool validateInputPins();
99 bool validateOutputPins();
101 void addInputPin(framemetadata_sp& metadata, string& pinId); // throws exception if validation fails
102 bool shouldTriggerSOS();
103
104 bool handlePropsChange(frame_sp& frame);
105
106private:
107 class Detail;
108 boost::shared_ptr<Detail> mDetail;
109};
110
111
112
Definition CalcHistogramCV.h:17
int bins
Definition CalcHistogramCV.h:35
apra::ScalarPropertyValue getProperty(const std::string &propName) const
Definition CalcHistogramCV.h:53
bool setProperty(const std::string &propName, const apra::ScalarPropertyValue &value)
Definition CalcHistogramCV.h:59
static void applyProperties(PropsT &props, const std::map< std::string, apra::ScalarPropertyValue > &values, std::vector< std::string > &missingRequired)
Definition CalcHistogramCV.h:43
CalcHistogramCVProps(int _bins)
Definition CalcHistogramCV.h:24
CalcHistogramCVProps()
Definition CalcHistogramCV.h:19
size_t getSerializeSize()
Definition CalcHistogramCV.h:29
friend class boost::serialization::access
Definition CalcHistogramCV.h:70
vector< int > roi
Definition CalcHistogramCV.h:36
void serialize(Archive &ar, const unsigned int version)
Definition CalcHistogramCV.h:73
static std::vector< std::string > dynamicPropertyNames()
Definition CalcHistogramCV.h:65
string maskImgPath
Definition CalcHistogramCV.h:37
Definition CalcHistogramCV.h:83
virtual bool init()
Definition CalcHistogramCV.cpp:266
bool process(frame_container &frames)
Definition CalcHistogramCV.cpp:286
bool processSOS(frame_sp &frame)
Definition CalcHistogramCV.cpp:307
void setProps(CalcHistogramCVProps &props)
Definition CalcHistogramCV.cpp:327
CalcHistogramCVProps getProps()
Definition CalcHistogramCV.cpp:319
virtual ~CalcHistogramCV()
Definition CalcHistogramCV.h:87
bool shouldTriggerSOS()
Definition CalcHistogramCV.cpp:314
boost::shared_ptr< Detail > mDetail
Definition CalcHistogramCV.h:108
bool validateOutputPins()
Definition CalcHistogramCV.cpp:227
CalcHistogramCV(CalcHistogramCVProps props)
Definition CalcHistogramCV.cpp:203
bool validateInputPins()
Definition CalcHistogramCV.cpp:208
virtual bool term()
Definition CalcHistogramCV.cpp:281
bool handlePropsChange(frame_sp &frame)
Definition CalcHistogramCV.cpp:332
bool validateInputOutputPins()
Definition CalcHistogramCV.cpp:249
void addInputPin(framemetadata_sp &metadata, string &pinId)
Definition CalcHistogramCV.cpp:260
Definition FacialLandmarksCV.cpp:17
Definition Module.h:33
virtual size_t getSerializeSize()
Definition Module.h:101
Definition Module.h:151
void applyProp(T &member, const char *propName, const std::map< std::string, ScalarPropertyValue > &values, bool isRequired, std::vector< std::string > &missingRequired)
Definition PropertyMacros.h:36
std::variant< int64_t, double, bool, std::string > ScalarPropertyValue
Definition ModuleRegistry.h:30