Commit 94b97b7a authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

partially recovered binary compatibility (ticket #2415)

parent 25a9b0a2
......@@ -7,8 +7,6 @@
#include <vector>
namespace cv
{
class DetectionBasedTracker
{
public:
......@@ -169,5 +167,10 @@ class DetectionBasedTracker
cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const;
void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions);
};
namespace cv
{
typedef ::DetectionBasedTracker DetectionBasedTracker;
} //end of cv namespace
#endif
......@@ -2124,11 +2124,15 @@ CV_EXPORTS_W void reduce(InputArray src, OutputArray dst, int dim, int rtype, in
//! makes multi-channel array out of several single-channel arrays
CV_EXPORTS void merge(const Mat* mv, size_t count, OutputArray dst);
CV_EXPORTS void merge(const vector<Mat>& mv, OutputArray dst );
//! makes multi-channel array out of several single-channel arrays
CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst);
//! copies each plane of a multi-channel array to a dedicated array
CV_EXPORTS void split(const Mat& src, Mat* mvbegin);
CV_EXPORTS void split(const Mat& src, vector<Mat>& mv );
//! copies each plane of a multi-channel array to a dedicated array
CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv);
......@@ -2547,7 +2551,7 @@ CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,
Point offset=Point() );
//! draws one or more polygonal curves
CV_EXPORTS void polylines(Mat& img, const Point* const* pts, const int* npts,
CV_EXPORTS void polylines(Mat& img, const Point** pts, const int* npts,
int ncontours, bool isClosed, const Scalar& color,
int thickness=1, int lineType=8, int shift=0 );
......@@ -3995,7 +3999,7 @@ public:
//! closes the file and releases all the memory buffers
CV_WRAP virtual void release();
//! closes the file, releases all the memory buffers and returns the text string
CV_WRAP virtual string releaseAndGetString();
CV_WRAP string releaseAndGetString();
//! returns the first element of the top-level mapping
CV_WRAP FileNode getFirstTopLevelNode() const;
......@@ -4538,6 +4542,7 @@ template<> struct ParamType<uint64>
class CV_EXPORTS CommandLineParser
{
public:
CommandLineParser(int argc, const char* const argv[], const char* keys);
CommandLineParser(int argc, const char* const argv[], const string& keys);
CommandLineParser(const CommandLineParser& parser);
CommandLineParser& operator = (const CommandLineParser& parser);
......@@ -4559,17 +4564,18 @@ public:
getByIndex(index, space_delete, ParamType<T>::type, (void*)&val);
return val;
}
bool has(const string& name) const;
bool has(const string& name);
bool check() const;
void about(const string& message);
void printMessage() const;
void printErrors() const;
void printParams();
protected:
string getString(const string& name);
void getByName(const string& name, bool space_delete, int type, void* dst) const;
void getByIndex(int index, bool space_delete, int type, void* dst) const;
......
......@@ -221,7 +221,7 @@ public:
static Ptr<GlFont> get(const std::string& family, int height = 12, Weight weight = WEIGHT_NORMAL, Style style = STYLE_NORMAL);
void draw(const char* str, size_t len) const;
void draw(const char* str, int len) const;
inline const std::string& family() const { return family_; }
inline int height() const { return height_; }
......
......@@ -27,9 +27,12 @@ struct CommandLineParser::Impl
vector<CommandLineParserParams> data;
Impl() { refcount = 1; }
Impl(int argc, const char* const argv[], const char* keys);
vector<string> split_range_string(const string& str, char fs, char ss) const;
vector<string> split_string(const string& str, char symbol = ' ', bool create_empty_item = false) const;
string cat_string(const string& str) const;
string trim_spaces(const string& str) const;
void apply_params(const string& key, const string& value);
void apply_params(int i, string value);
......@@ -83,26 +86,39 @@ static void from_str(const string& str, int type, void* dst)
}
}
void CommandLineParser::getByName(const string& name, bool space_delete, int type, void* dst) const
string CommandLineParser::getString(const string& name)
{
try
for (size_t i = 0; i < impl->data.size(); i++)
{
for (size_t i = 0; i < impl->data.size(); i++)
for (size_t j = 0; j < impl->data[i].keys.size(); j++)
{
for (size_t j = 0; j < impl->data[i].keys.size(); j++)
if (name.compare(impl->data[i].keys[j]) == 0)
{
if (name.compare(impl->data[i].keys[j]) == 0)
{
string v = impl->data[i].def_value;
if (space_delete)
v = impl->cat_string(v);
from_str(v, type, dst);
return;
}
string v = impl->data[i].def_value;
return v;
}
}
impl->error = true;
impl->error_message += "Unknown parametes " + name + "\n";
}
return string();
}
void CommandLineParser::getByName(const string& name, bool space_delete, int type, void* dst) const
{
try
{
string v = ((CommandLineParser*)this)->getString(name);
if( v.empty() )
{
impl->error = true;
impl->error_message += "Unknown parametes " + name + "\n";
}
else
{
if (space_delete)
v = impl->trim_spaces(v);
from_str(v, type, dst);
return;
}
}
catch (std::exception& e)
{
......@@ -121,7 +137,7 @@ void CommandLineParser::getByIndex(int index, bool space_delete, int type, void*
if (impl->data[i].number == index)
{
string v = impl->data[i].def_value;
if (space_delete == true) v = impl->cat_string(v);
if (space_delete == true) v = impl->trim_spaces(v);
from_str(v, type, dst);
return;
}
......@@ -154,36 +170,45 @@ static bool cmp_params(const CommandLineParserParams & p1, const CommandLinePars
CommandLineParser::CommandLineParser(int argc, const char* const argv[], const string& keys)
{
impl = new Impl;
impl->refcount = 1;
impl = new Impl(argc, argv, keys.c_str());
}
CommandLineParser::CommandLineParser(int argc, const char* const argv[], const char* keys)
{
impl = new Impl(argc, argv, keys);
}
CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* keys)
{
refcount = 1;
// path to application
size_t pos_s = string(argv[0]).find_last_of("/\\");
if (pos_s == string::npos)
{
impl->path_to_app = "";
impl->app_name = string(argv[0]);
path_to_app = "";
app_name = string(argv[0]);
}
else
{
impl->path_to_app = string(argv[0]).substr(0, pos_s);
impl->app_name = string(argv[0]).substr(pos_s + 1, string(argv[0]).length() - pos_s);
path_to_app = string(argv[0]).substr(0, pos_s);
app_name = string(argv[0]).substr(pos_s + 1, string(argv[0]).length() - pos_s);
}
impl->error = false;
impl->error_message = "";
error = false;
error_message = "";
// parse keys
vector<string> k = impl->split_range_string(keys, '{', '}');
vector<string> k = split_range_string(keys, '{', '}');
int jj = 0;
for (size_t i = 0; i < k.size(); i++)
{
vector<string> l = impl->split_string(k[i], '|', true);
vector<string> l = split_string(k[i], '|', true);
CommandLineParserParams p;
p.keys = impl->split_string(l[0]);
p.keys = split_string(l[0]);
p.def_value = l[1];
p.help_message = impl->cat_string(l[2]);
p.help_message = trim_spaces(l[2]);
p.number = -1;
if (p.keys[0][0] == '@')
{
......@@ -191,7 +216,7 @@ CommandLineParser::CommandLineParser(int argc, const char* const argv[], const s
jj++;
}
impl->data.push_back(p);
data.push_back(p);
}
// parse argv
......@@ -202,13 +227,13 @@ CommandLineParser::CommandLineParser(int argc, const char* const argv[], const s
if (s.find('=') != string::npos && s.find('=') < s.length())
{
vector<string> k_v = impl->split_string(s, '=', true);
vector<string> k_v = split_string(s, '=', true);
for (int h = 0; h < 2; h++)
{
if (k_v[0][0] == '-')
k_v[0] = k_v[0].substr(1, k_v[0].length() -1);
}
impl->apply_params(k_v[0], k_v[1]);
apply_params(k_v[0], k_v[1]);
}
else if (s.length() > 1 && s[0] == '-')
{
......@@ -217,16 +242,16 @@ CommandLineParser::CommandLineParser(int argc, const char* const argv[], const s
if (s[0] == '-')
s = s.substr(1, s.length() - 1);
}
impl->apply_params(s, "true");
apply_params(s, "true");
}
else if (s[0] != '-')
{
impl->apply_params(jj, s);
apply_params(jj, s);
jj++;
}
}
impl->sort_params();
sort_params();
}
......@@ -290,7 +315,7 @@ void CommandLineParser::Impl::sort_params()
sort (data.begin(), data.end(), cmp_params);
}
string CommandLineParser::Impl::cat_string(const string& str) const
string CommandLineParser::Impl::trim_spaces(const string& str) const
{
int left = 0, right = (int)str.length();
while( left <= right && str[left] == ' ' )
......@@ -305,7 +330,7 @@ string CommandLineParser::getPathToApplication() const
return impl->path_to_app;
}
bool CommandLineParser::has(const string& name) const
bool CommandLineParser::has(const string& name)
{
for (size_t i = 0; i < impl->data.size(); i++)
{
......@@ -333,6 +358,11 @@ void CommandLineParser::printErrors() const
}
}
void CommandLineParser::printParams()
{
printMessage();
}
void CommandLineParser::printMessage() const
{
if (impl->about_message != "")
......@@ -374,7 +404,7 @@ void CommandLineParser::printMessage() const
std::cout << ", ";
}
}
string dv = impl->cat_string(impl->data[i].def_value);
string dv = impl->trim_spaces(impl->data[i].def_value);
if (dv.compare("") != 0)
{
std::cout << " (value:" << dv << ")";
......@@ -394,7 +424,7 @@ void CommandLineParser::printMessage() const
std::cout << k;
string dv = impl->cat_string(impl->data[i].def_value);
string dv = impl->trim_spaces(impl->data[i].def_value);
if (dv.compare("") != 0)
{
std::cout << " (value:" << dv << ")";
......
......@@ -267,6 +267,11 @@ void cv::split(InputArray _m, OutputArrayOfArrays _mv)
split(m, dst);
}
void cv::split(const Mat& src, vector<Mat>& mv)
{
split(_InputArray(src), _OutputArray(mv));
}
void cv::merge(const Mat* mv, size_t n, OutputArray _dst)
{
CV_Assert( mv && n > 0 );
......@@ -349,6 +354,11 @@ void cv::merge(InputArrayOfArrays _mv, OutputArray _dst)
merge(!mv.empty() ? &mv[0] : 0, mv.size(), _dst);
}
void cv::merge(const vector<Mat>& _mv, OutputArray _dst)
{
merge(_InputArray(_mv), _dst);
}
/****************************************************************************************\
* Generalized split/merge: mixing channels *
\****************************************************************************************/
......
......@@ -1730,7 +1730,7 @@ void fillPoly( Mat& img, const Point** pts, const int* npts, int ncontours,
}
void polylines( Mat& img, const Point* const* pts, const int* npts, int ncontours, bool isClosed,
void polylines( Mat& img, const Point** pts, const int* npts, int ncontours, bool isClosed,
const Scalar& color, int thickness, int line_type, int shift )
{
if( line_type == CV_AA && img.depth() != CV_8U )
......
......@@ -1257,7 +1257,7 @@ cv::GlFont::GlFont(const string& _family, int _height, Weight _weight, Style _st
#endif
}
void cv::GlFont::draw(const char* str, size_t len) const
void cv::GlFont::draw(const char* str, int len) const
{
#ifndef HAVE_OPENGL
(void)str;
......@@ -1409,7 +1409,7 @@ void cv::render(const string& str, const Ptr<GlFont>& font, Scalar color, Point2
glRasterPos2d(2.0 * (viewport[0] + pos.x) / viewport[2] - 1.0, 1.0 - 2.0 * (viewport[1] + pos.y + font->height()) / viewport[3]);
font->draw(str.c_str(), str.length());
font->draw(str.c_str(), (int)str.length());
glPopAttrib();
#endif
......
......@@ -636,8 +636,10 @@ CV_EXPORTS_W void accumulateWeighted( InputArray src, InputOutputArray dst,
//! computes PSNR image/video quality metric
CV_EXPORTS_W double PSNR(InputArray src1, InputArray src2);
CV_EXPORTS Point2d phaseCorrelate(InputArray src1, InputArray src2,
InputArray window = noArray());
CV_EXPORTS_W Point2d phaseCorrelate(InputArray src1, InputArray src2,
InputArray window = noArray(), CV_OUT double* response=0);
InputArray window, CV_OUT double* response CV_WRAP_DEFAULT(0));
CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type);
//! type of the threshold operation
......
......@@ -568,6 +568,10 @@ cv::Point2d cv::phaseCorrelate(InputArray _src1, InputArray _src2, InputArray _w
return (center - t);
}
cv::Point2d cv::phaseCorrelate(InputArray _src1, InputArray _src2, InputArray _window)
{
return phaseCorrelate(_src1, _src2, _window, 0);
}
void cv::createHanningWindow(OutputArray _dst, cv::Size winSize, int type)
{
......
......@@ -63,9 +63,6 @@ public:
virtual void setRadius(int val) { radius_ = val; }
virtual int radius() const { return radius_; }
virtual void deblur(int idx, Mat &frame) = 0;
// data from stabilizer
virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; }
......@@ -77,6 +74,9 @@ public:
virtual void setBlurrinessRates(const std::vector<float> &val) { blurrinessRates_ = &val; }
virtual const std::vector<float>& blurrinessRates() const { return *blurrinessRates_; }
virtual void update() {}
virtual void deblur(int idx, Mat &frame) = 0;
protected:
int radius_;
const std::vector<Mat> *frames_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment