@ -415,6 +415,8 @@ void AlgorithmInfo::write(const Algorithm* algo, FileStorage& fs) const
cv : : write ( fs , pname , algo - > get < int > ( pname ) ) ;
else if ( p . type = = Param : : BOOLEAN )
cv : : write ( fs , pname , ( int ) algo - > get < bool > ( pname ) ) ;
else if ( p . type = = Param : : SHORT )
cv : : write ( fs , pname , ( int ) algo - > get < short > ( pname ) ) ;
else if ( p . type = = Param : : REAL )
cv : : write ( fs , pname , algo - > get < double > ( pname ) ) ;
else if ( p . type = = Param : : STRING )
@ -430,7 +432,10 @@ void AlgorithmInfo::write(const Algorithm* algo, FileStorage& fs) const
nestedAlgo - > write ( fs ) ;
}
else
CV_Error ( CV_StsUnsupportedFormat , " unknown/unsupported parameter type " ) ;
{
string msg = format ( " unknown/unsupported type of '%s' parameter == %d " , pname . c_str ( ) , p . type ) ;
CV_Error ( CV_StsUnsupportedFormat , msg . c_str ( ) ) ;
}
}
}
@ -446,7 +451,7 @@ void AlgorithmInfo::read(Algorithm* algo, const FileNode& fn) const
const FileNode n = fn [ pname ] ;
if ( n . empty ( ) )
continue ;
if ( p . type = = Param : : INT )
if ( p . type = = Param : : INT | | p . type = = Param : : SHORT )
{
int val = ( int ) n ;
info - > set ( algo , pname . c_str ( ) , p . type , & val , true ) ;
@ -486,7 +491,10 @@ void AlgorithmInfo::read(Algorithm* algo, const FileNode& fn) const
info - > set ( algo , pname . c_str ( ) , p . type , & nestedAlgo , true ) ;
}
else
CV_Error ( CV_StsUnsupportedFormat , " unknown/unsupported parameter type " ) ;
{
string msg = format ( " unknown/unsupported type of '%s' parameter == %d " , pname . c_str ( ) , p . type ) ;
CV_Error ( CV_StsUnsupportedFormat , msg . c_str ( ) ) ;
}
}
}
@ -589,7 +597,7 @@ void AlgorithmInfo::set(Algorithm* algo, const char* parameter, int argType, con
GetSetParam f ;
f . set_int = p - > setter ;
if ( argType = = Param : : INT | | argType = = Param : : BOOLEAN | | argType = = Param : : REAL )
if ( argType = = Param : : INT | | argType = = Param : : BOOLEAN | | argType = = Param : : REAL | | argType = = Param : : SHORT )
{
if ( ! ( p - > type = = Param : : INT | | p - > type = = Param : : REAL | | p - > type = = Param : : BOOLEAN | | ( p - > type = = Param : : SHORT & & argType = = Param : : INT ) ) )
{
@ -805,7 +813,10 @@ void AlgorithmInfo::get(const Algorithm* algo, const char* parameter, int argTyp
* ( Ptr < Algorithm > * ) ( ( uchar * ) algo + p - > offset ) ;
}
else
CV_Error ( CV_StsBadArg , " Unknown/unsupported parameter type " ) ;
{
string message = getErrorMessageForWrongArgumentInGetter ( algo - > name ( ) , parameter , p - > type , argType ) ;
CV_Error ( CV_StsBadArg , message ) ;
}
}
@ -864,7 +875,7 @@ void AlgorithmInfo::addParam(Algorithm& algo, const char* parameter,
void ( Algorithm : : * setter ) ( int ) ,
const string & help )
{
addParam_ ( algo , parameter , ParamType < in t> : : type , & value , readOnly ,
addParam_ ( algo , parameter , ParamType < shor t> : : type , & value , readOnly ,
( Algorithm : : Getter ) getter , ( Algorithm : : Setter ) setter , help ) ;
}