15 #ifndef VISIONTRANSFER_PARAMETER_H
16 #define VISIONTRANSFER_PARAMETER_H
28 #include <visiontransfer/common.h>
29 #include <visiontransfer/parametervalue.h>
30 #include <visiontransfer/internal/conversionhelpers.h>
32 namespace visiontransfer {
61 enum ParameterAccessMode {
67 enum ParameterInteractionHint {
68 INTERACTION_INVISIBLE = -1,
69 INTERACTION_INACTIVE = 0,
70 INTERACTION_ACTIVE = 1
73 enum GovernorFunction {
74 GOVERNOR_FN_CHANGE_VALUE = 0,
81 VT_EXPORT
Parameter(
const std::string& uid);
89 VT_EXPORT std::string
getUid()
const;
91 VT_EXPORT std::string
getName()
const;
99 VT_EXPORT std::string
getUnit()
const;
101 VT_EXPORT ParameterValue::ParameterType
getType()
const;
137 VT_EXPORT std::string
interpolateCommandLine(
const ParameterValue& newVal, GovernorFunction fn = GOVERNOR_FN_CHANGE_VALUE);
206 VT_EXPORT
Parameter&
setOptions(
const std::vector<T>& opts,
const std::vector<std::string>& descriptions);
209 VT_EXPORT
Parameter&
setOptions(std::initializer_list<T> opts, std::initializer_list<std::string> descriptions);
220 VT_EXPORT ParameterValue getDefaultParameterValue();
226 VT_EXPORT T
getMin()
const;
229 VT_EXPORT T
getMax()
const;
244 VT_EXPORT
double at(
unsigned int x);
246 VT_EXPORT
double at(
unsigned int y,
unsigned int x);
248 VT_EXPORT
double at(
unsigned int z,
unsigned int y,
unsigned int x);
250 #ifdef CV_MAJOR_VERSION
254 throw std::runtime_error(
"Parameter::setTensorFromCvSize(): refused to overwrite existing non-tensor type");
258 if (
getTensorNumElements() != 2)
throw std::runtime_error(
"Parameter::setTensorFromSize(): refused to overwrite tensor with size != 2");
263 std::vector<double> data = { (double) cvSize.width, (
double) cvSize.height };
270 if (
getTensorNumElements() != 2)
throw std::runtime_error(
"Parameter::setCvSizeFromTensor(): refused to export Tensor of size!=2 to cv::Size");
271 cvSize = cv::Size((
int)
at(0), (
int)
at(1));
277 throw std::runtime_error(
"Parameter::setTensorFromCvMat(): refused to overwrite existing non-tensor type");
279 std::vector<unsigned int> dims = { (
unsigned int) cvMat.rows, (
unsigned int) cvMat.cols };
282 if (
getTensorNumElements() != dims[0]*dims[1])
throw std::runtime_error(
"Parameter::setTensorFromCvMat(): refused to overwrite tensor with cv::Mat of mismatching total size");
288 std::vector<double> data;
289 for (
unsigned int r=0; r<(
unsigned int) cvMat.rows; ++r)
290 for (
unsigned int c=0; c<(
unsigned int) cvMat.cols; ++c) {
291 data.push_back((
double) cvMat(r, c));
301 std::ostringstream ss;
308 throw std::runtime_error(std::string(
"Parameter::Pimpl::setCvMatFromTensor(): refused to export non-2D Tensor to cv::Mat, offending shape is: ")+ss.str());
313 #endif // CV_MAJOR_VERSION
VT_EXPORT Parameter & setModuleName(const std::string &n)
VT_EXPORT T getIncrement() const
VT_EXPORT bool getInvokeGovernorOnInit() const
VT_EXPORT ParameterValue::ParameterType getType() const
VT_EXPORT Parameter & setCurrentFromDefault()
VT_EXPORT unsigned int getTensorDimension() const
VT_EXPORT ParameterInteractionHint getInteractionHint() const
VT_EXPORT bool isTensor() const
VT_EXPORT void setCvSizeFromTensor(cv::Size &cvSize)
VT_EXPORT unsigned int getTensorNumElements() const
VT_EXPORT ParameterValue getCurrentParameterValue()
VT_EXPORT bool hasRange() const
VT_EXPORT T getDefault() const
VT_EXPORT bool hasIncrement() const
VT_EXPORT std::vector< double > getTensorDefaultData() const
VT_EXPORT std::vector< double > & getTensorDataReference()
VT_EXPORT std::string getName() const
VT_EXPORT Parameter & operator=(const Parameter &other)
VT_EXPORT Parameter & setInteractionHint(ParameterInteractionHint hint)
VT_EXPORT bool isScalar() const
VT_EXPORT ParameterAccessMode getAccessForApi() const
VT_EXPORT std::vector< std::string > getOptionDescriptions() const
VT_EXPORT Parameter & setCurrentFrom(const Parameter &from)
VT_EXPORT bool isCommand() const
VT_EXPORT ParameterAccessMode getAccessForConfig() const
VT_EXPORT Parameter & setName(const std::string &name)
VT_EXPORT void setCvMatFromTensor(cv::Mat_< T > &cvMat)
VT_EXPORT Parameter & setDefault(T t)
VT_EXPORT bool hasDefault() const
VT_EXPORT Parameter & setOptions(const std::vector< T > &opts, const std::vector< std::string > &descriptions)
VT_EXPORT std::vector< double > getTensorData() const
VT_EXPORT T getMin() const
VT_EXPORT Parameter & setTensorFromCvMat(const cv::Mat_< T > &cvMat)
VT_EXPORT Parameter & setTensorDefaultData(const std::vector< double > &data)
VT_EXPORT Parameter & setAsTensor(const std::vector< unsigned int > &shape)
VT_EXPORT Parameter & setAccessForConfig(ParameterAccessMode mode)
VT_EXPORT Parameter & setCurrent(T t)
VT_EXPORT Parameter & setRange(T mn, T mx)
VT_EXPORT bool getIsModified() const
VT_EXPORT bool isValidNewValue(T t) const
VT_EXPORT std::string interpolateCommandLine(const ParameterValue &newVal, GovernorFunction fn=GOVERNOR_FN_CHANGE_VALUE)
VT_EXPORT Parameter & setType(ParameterValue::ParameterType t)
VT_EXPORT std::string getDescription() const
VT_EXPORT Parameter & setGovernor(GovernorType govType, const std::string &govStr)
VT_EXPORT Parameter & setIsPolled(bool mod)
VT_EXPORT T getMax() const
VT_EXPORT std::vector< unsigned int > getTensorShape() const
VT_EXPORT double at(unsigned int x)
VT_EXPORT Parameter & setIsModified(bool mod)
VT_EXPORT T enforceIncrement(T t)
VT_EXPORT std::vector< T > getOptions() const
VT_EXPORT Parameter & setTensorData(const std::vector< double > &data)
VT_EXPORT Parameter & setIncrement(T t)
VT_EXPORT std::string getGovernorString() const
VT_EXPORT Parameter & setInvokeGovernorOnInit(bool invoke)
VT_EXPORT std::string getCategoryName() const
VT_EXPORT std::vector< double > & getTensorDefaultDataReference()
VT_EXPORT std::string getModuleName() const
VT_EXPORT bool hasOptions() const
VT_EXPORT T getCurrent() const
VT_EXPORT std::string getUnit() const
VT_EXPORT std::string getUid() const
VT_EXPORT Parameter & setUnit(const std::string &d)
VT_EXPORT Parameter & setCategoryName(const std::string &n)
VT_EXPORT GovernorType getGovernorType() const
VT_EXPORT bool ensureValidCurrent()
VT_EXPORT bool ensureValidDefault()
VT_EXPORT bool hasCurrent() const
VT_EXPORT Parameter & setAccessForApi(ParameterAccessMode mode)
VT_EXPORT Parameter & setTensorFromCvSize(const cv::Size &cvSize)
VT_EXPORT Parameter & setDescription(const std::string &d)
VT_EXPORT Parameter & setGovernorPollString(const std::string &govStr)
VT_EXPORT Parameter & unsetRange()
VT_EXPORT bool getIsPolled() const