Revert "partially recovered binary compatibility (ticket #2415)"

This reverts commit 94b97b7a63.
pull/52/head
Andrey Kamaev 13 years ago
parent 075372a71c
commit 0442bca235
  1. 7
      modules/contrib/include/opencv2/contrib/detection_based_tracker.hpp
  2. 63
      modules/contrib/src/detection_based_tracker.cpp
  3. 16
      modules/core/include/opencv2/core/core.hpp
  4. 2
      modules/core/include/opencv2/core/opengl_interop.hpp
  5. 106
      modules/core/src/command_line_parser.cpp
  6. 10
      modules/core/src/convert.cpp
  7. 2
      modules/core/src/drawing.cpp
  8. 4
      modules/core/src/opengl_interop.cpp
  9. 4
      modules/imgproc/include/opencv2/imgproc/imgproc.hpp
  10. 4
      modules/imgproc/src/phasecorr.cpp
  11. 6
      modules/videostab/include/opencv2/videostab/deblurring.hpp

@ -7,6 +7,8 @@
#include <vector> #include <vector>
namespace cv
{
class DetectionBasedTracker class DetectionBasedTracker
{ {
public: public:
@ -167,10 +169,5 @@ class DetectionBasedTracker
cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const; cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const;
void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions); void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions);
}; };
namespace cv
{
typedef ::DetectionBasedTracker DetectionBasedTracker;
} //end of cv namespace } //end of cv namespace
#endif #endif

@ -60,12 +60,15 @@ static inline cv::Rect scale_rect(const cv::Rect& r, float scale)
return cv::Rect(x, y, cvRound(width), cvRound(height)); return cv::Rect(x, y, cvRound(width), cvRound(height));
} }
void* workcycleObjectDetectorFunction(void* p); namespace cv
{
void* workcycleObjectDetectorFunction(void* p);
}
class DetectionBasedTracker::SeparateDetectionWork class cv::DetectionBasedTracker::SeparateDetectionWork
{ {
public: public:
SeparateDetectionWork(DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector); SeparateDetectionWork(cv::DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector);
virtual ~SeparateDetectionWork(); virtual ~SeparateDetectionWork();
bool communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions); bool communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions);
bool run(); bool run();
@ -116,7 +119,7 @@ class DetectionBasedTracker::SeparateDetectionWork
long long timeWhenDetectingThreadStartedWork; long long timeWhenDetectingThreadStartedWork;
}; };
DetectionBasedTracker::SeparateDetectionWork::SeparateDetectionWork(DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector) cv::DetectionBasedTracker::SeparateDetectionWork::SeparateDetectionWork(DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector)
:detectionBasedTracker(_detectionBasedTracker), :detectionBasedTracker(_detectionBasedTracker),
cascadeInThread(), cascadeInThread(),
isObjectDetectingReady(false), isObjectDetectingReady(false),
@ -149,7 +152,7 @@ DetectionBasedTracker::SeparateDetectionWork::SeparateDetectionWork(DetectionBas
} }
} }
DetectionBasedTracker::SeparateDetectionWork::~SeparateDetectionWork() cv::DetectionBasedTracker::SeparateDetectionWork::~SeparateDetectionWork()
{ {
if(stateThread!=STATE_THREAD_STOPPED) { if(stateThread!=STATE_THREAD_STOPPED) {
LOGE("\n\n\nATTENTION!!! dangerous algorithm error: destructor DetectionBasedTracker::DetectionBasedTracker::~SeparateDetectionWork is called before stopping the workthread"); LOGE("\n\n\nATTENTION!!! dangerous algorithm error: destructor DetectionBasedTracker::DetectionBasedTracker::~SeparateDetectionWork is called before stopping the workthread");
@ -159,7 +162,7 @@ DetectionBasedTracker::SeparateDetectionWork::~SeparateDetectionWork()
pthread_cond_destroy(&objectDetectorRun); pthread_cond_destroy(&objectDetectorRun);
pthread_mutex_destroy(&mutex); pthread_mutex_destroy(&mutex);
} }
bool DetectionBasedTracker::SeparateDetectionWork::run() bool cv::DetectionBasedTracker::SeparateDetectionWork::run()
{ {
LOGD("DetectionBasedTracker::SeparateDetectionWork::run() --- start"); LOGD("DetectionBasedTracker::SeparateDetectionWork::run() --- start");
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
@ -208,18 +211,18 @@ do {
} while(0) } while(0)
#endif #endif
void* workcycleObjectDetectorFunction(void* p) void* cv::workcycleObjectDetectorFunction(void* p)
{ {
CATCH_ALL_AND_LOG({ ((DetectionBasedTracker::SeparateDetectionWork*)p)->workcycleObjectDetector(); }); CATCH_ALL_AND_LOG({ ((cv::DetectionBasedTracker::SeparateDetectionWork*)p)->workcycleObjectDetector(); });
try{ try{
((DetectionBasedTracker::SeparateDetectionWork*)p)->stateThread = DetectionBasedTracker::SeparateDetectionWork::STATE_THREAD_STOPPED; ((cv::DetectionBasedTracker::SeparateDetectionWork*)p)->stateThread = cv::DetectionBasedTracker::SeparateDetectionWork::STATE_THREAD_STOPPED;
} catch(...) { } catch(...) {
LOGE0("DetectionBasedTracker: workcycleObjectDetectorFunction: ERROR concerning pointer, received as the function parameter"); LOGE0("DetectionBasedTracker: workcycleObjectDetectorFunction: ERROR concerning pointer, received as the function parameter");
} }
return NULL; return NULL;
} }
void DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector() void cv::DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector()
{ {
static double freq = getTickFrequency(); static double freq = getTickFrequency();
LOGD("DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector() --- start"); LOGD("DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector() --- start");
@ -343,7 +346,7 @@ void DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector()
LOGI("DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector: Returning"); LOGI("DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector: Returning");
} }
void DetectionBasedTracker::SeparateDetectionWork::stop() void cv::DetectionBasedTracker::SeparateDetectionWork::stop()
{ {
//FIXME: TODO: should add quickStop functionality //FIXME: TODO: should add quickStop functionality
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
@ -360,7 +363,7 @@ void DetectionBasedTracker::SeparateDetectionWork::stop()
pthread_mutex_unlock(&mutex); pthread_mutex_unlock(&mutex);
} }
void DetectionBasedTracker::SeparateDetectionWork::resetTracking() void cv::DetectionBasedTracker::SeparateDetectionWork::resetTracking()
{ {
LOGD("DetectionBasedTracker::SeparateDetectionWork::resetTracking"); LOGD("DetectionBasedTracker::SeparateDetectionWork::resetTracking");
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
@ -381,7 +384,7 @@ void DetectionBasedTracker::SeparateDetectionWork::resetTracking()
} }
bool DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions) bool cv::DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions)
{ {
static double freq = getTickFrequency(); static double freq = getTickFrequency();
@ -431,13 +434,13 @@ bool DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThrea
return shouldHandleResult; return shouldHandleResult;
} }
DetectionBasedTracker::Parameters::Parameters() cv::DetectionBasedTracker::Parameters::Parameters()
{ {
maxTrackLifetime=5; maxTrackLifetime=5;
minDetectionPeriod=0; minDetectionPeriod=0;
} }
DetectionBasedTracker::InnerParameters::InnerParameters() cv::DetectionBasedTracker::InnerParameters::InnerParameters()
{ {
numLastPositionsToTrack=4; numLastPositionsToTrack=4;
numStepsToWaitBeforeFirstShow=6; numStepsToWaitBeforeFirstShow=6;
@ -450,7 +453,7 @@ DetectionBasedTracker::InnerParameters::InnerParameters()
} }
DetectionBasedTracker::DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv::Ptr<IDetector> trackingDetector, const Parameters& params) cv::DetectionBasedTracker::DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv::Ptr<IDetector> trackingDetector, const Parameters& params)
:separateDetectionWork(), :separateDetectionWork(),
parameters(params), parameters(params),
innerParameters(), innerParameters(),
@ -471,7 +474,7 @@ DetectionBasedTracker::DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv
weightsSizesSmoothing.push_back(0.2); weightsSizesSmoothing.push_back(0.2);
} }
DetectionBasedTracker::~DetectionBasedTracker() cv::DetectionBasedTracker::~DetectionBasedTracker()
{ {
} }
@ -544,7 +547,7 @@ void DetectionBasedTracker::process(const Mat& imageGray)
updateTrackedObjects(detectedObjectsInRegions); updateTrackedObjects(detectedObjectsInRegions);
} }
void DetectionBasedTracker::getObjects(std::vector<cv::Rect>& result) const void cv::DetectionBasedTracker::getObjects(std::vector<cv::Rect>& result) const
{ {
result.clear(); result.clear();
@ -558,7 +561,7 @@ void DetectionBasedTracker::getObjects(std::vector<cv::Rect>& result) const
} }
} }
void DetectionBasedTracker::getObjects(std::vector<Object>& result) const void cv::DetectionBasedTracker::getObjects(std::vector<Object>& result) const
{ {
result.clear(); result.clear();
@ -571,7 +574,7 @@ void DetectionBasedTracker::getObjects(std::vector<Object>& result) const
LOGD("DetectionBasedTracker::process: found a object with SIZE %d x %d, rect={%d, %d, %d x %d}", r.width, r.height, r.x, r.y, r.width, r.height); LOGD("DetectionBasedTracker::process: found a object with SIZE %d x %d, rect={%d, %d, %d x %d}", r.width, r.height, r.x, r.y, r.width, r.height);
} }
} }
void DetectionBasedTracker::getObjects(std::vector<ExtObject>& result) const void cv::DetectionBasedTracker::getObjects(std::vector<ExtObject>& result) const
{ {
result.clear(); result.clear();
@ -583,7 +586,7 @@ void DetectionBasedTracker::getObjects(std::vector<ExtObject>& result) const
} }
} }
bool DetectionBasedTracker::run() bool cv::DetectionBasedTracker::run()
{ {
if (!separateDetectionWork.empty()) { if (!separateDetectionWork.empty()) {
return separateDetectionWork->run(); return separateDetectionWork->run();
@ -591,14 +594,14 @@ bool DetectionBasedTracker::run()
return false; return false;
} }
void DetectionBasedTracker::stop() void cv::DetectionBasedTracker::stop()
{ {
if (!separateDetectionWork.empty()) { if (!separateDetectionWork.empty()) {
separateDetectionWork->stop(); separateDetectionWork->stop();
} }
} }
void DetectionBasedTracker::resetTracking() void cv::DetectionBasedTracker::resetTracking()
{ {
if (!separateDetectionWork.empty()) { if (!separateDetectionWork.empty()) {
separateDetectionWork->resetTracking(); separateDetectionWork->resetTracking();
@ -606,7 +609,7 @@ void DetectionBasedTracker::resetTracking()
trackedObjects.clear(); trackedObjects.clear();
} }
void DetectionBasedTracker::updateTrackedObjects(const vector<Rect>& detectedObjects) void cv::DetectionBasedTracker::updateTrackedObjects(const vector<Rect>& detectedObjects)
{ {
enum { enum {
NEW_RECTANGLE=-1, NEW_RECTANGLE=-1,
@ -727,7 +730,7 @@ void DetectionBasedTracker::updateTrackedObjects(const vector<Rect>& detectedObj
} }
} }
int DetectionBasedTracker::addObject(const Rect& location) int cv::DetectionBasedTracker::addObject(const Rect& location)
{ {
LOGD("DetectionBasedTracker::addObject: new object {%d, %d %dx%d}",location.x, location.y, location.width, location.height); LOGD("DetectionBasedTracker::addObject: new object {%d, %d %dx%d}",location.x, location.y, location.width, location.height);
trackedObjects.push_back(TrackedObject(location)); trackedObjects.push_back(TrackedObject(location));
@ -736,12 +739,12 @@ int DetectionBasedTracker::addObject(const Rect& location)
return newId; return newId;
} }
Rect DetectionBasedTracker::calcTrackedObjectPositionToShow(int i) const Rect cv::DetectionBasedTracker::calcTrackedObjectPositionToShow(int i) const
{ {
ObjectStatus status; ObjectStatus status;
return calcTrackedObjectPositionToShow(i, status); return calcTrackedObjectPositionToShow(i, status);
} }
Rect DetectionBasedTracker::calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const Rect cv::DetectionBasedTracker::calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const
{ {
if ( (i < 0) || (i >= (int)trackedObjects.size()) ) { if ( (i < 0) || (i >= (int)trackedObjects.size()) ) {
LOGE("DetectionBasedTracker::calcTrackedObjectPositionToShow: ERROR: wrong i=%d", i); LOGE("DetectionBasedTracker::calcTrackedObjectPositionToShow: ERROR: wrong i=%d", i);
@ -827,7 +830,7 @@ Rect DetectionBasedTracker::calcTrackedObjectPositionToShow(int i, ObjectStatus&
return res; return res;
} }
void DetectionBasedTracker::detectInRegion(const Mat& img, const Rect& r, vector<Rect>& detectedObjectsInRegions) void cv::DetectionBasedTracker::detectInRegion(const Mat& img, const Rect& r, vector<Rect>& detectedObjectsInRegions)
{ {
Rect r0(Point(), img.size()); Rect r0(Point(), img.size());
Rect r1 = scale_rect(r, innerParameters.coeffTrackingWindowSize); Rect r1 = scale_rect(r, innerParameters.coeffTrackingWindowSize);
@ -864,7 +867,7 @@ void DetectionBasedTracker::detectInRegion(const Mat& img, const Rect& r, vector
} }
} }
bool DetectionBasedTracker::setParameters(const Parameters& params) bool cv::DetectionBasedTracker::setParameters(const Parameters& params)
{ {
if ( params.maxTrackLifetime < 0 ) if ( params.maxTrackLifetime < 0 )
{ {
@ -882,7 +885,7 @@ bool DetectionBasedTracker::setParameters(const Parameters& params)
return true; return true;
} }
const DetectionBasedTracker::Parameters& DetectionBasedTracker::getParameters() const const cv::DetectionBasedTracker::Parameters& DetectionBasedTracker::getParameters() const
{ {
return parameters; return parameters;
} }

@ -2139,15 +2139,11 @@ CV_EXPORTS_W void reduce(InputArray src, OutputArray dst, int dim, int rtype, in
//! makes multi-channel array out of several single-channel arrays //! 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 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 //! makes multi-channel array out of several single-channel arrays
CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst); CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst);
//! copies each plane of a multi-channel array to a dedicated array //! 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, Mat* mvbegin);
CV_EXPORTS void split(const Mat& src, vector<Mat>& mv );
//! copies each plane of a multi-channel array to a dedicated array //! copies each plane of a multi-channel array to a dedicated array
CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv); CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv);
@ -2566,7 +2562,7 @@ CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,
Point offset=Point() ); Point offset=Point() );
//! draws one or more polygonal curves //! draws one or more polygonal curves
CV_EXPORTS void polylines(Mat& img, const Point** pts, const int* npts, CV_EXPORTS void polylines(Mat& img, const Point* const* pts, const int* npts,
int ncontours, bool isClosed, const Scalar& color, int ncontours, bool isClosed, const Scalar& color,
int thickness=1, int lineType=8, int shift=0 ); int thickness=1, int lineType=8, int shift=0 );
@ -4014,7 +4010,7 @@ public:
//! closes the file and releases all the memory buffers //! closes the file and releases all the memory buffers
CV_WRAP virtual void release(); CV_WRAP virtual void release();
//! closes the file, releases all the memory buffers and returns the text string //! closes the file, releases all the memory buffers and returns the text string
CV_WRAP string releaseAndGetString(); CV_WRAP virtual string releaseAndGetString();
//! returns the first element of the top-level mapping //! returns the first element of the top-level mapping
CV_WRAP FileNode getFirstTopLevelNode() const; CV_WRAP FileNode getFirstTopLevelNode() const;
@ -4557,7 +4553,6 @@ template<> struct ParamType<uint64>
class CV_EXPORTS CommandLineParser class CV_EXPORTS CommandLineParser
{ {
public: public:
CommandLineParser(int argc, const char* const argv[], const char* keys);
CommandLineParser(int argc, const char* const argv[], const string& keys); CommandLineParser(int argc, const char* const argv[], const string& keys);
CommandLineParser(const CommandLineParser& parser); CommandLineParser(const CommandLineParser& parser);
CommandLineParser& operator = (const CommandLineParser& parser); CommandLineParser& operator = (const CommandLineParser& parser);
@ -4579,18 +4574,17 @@ public:
getByIndex(index, space_delete, ParamType<T>::type, (void*)&val); getByIndex(index, space_delete, ParamType<T>::type, (void*)&val);
return val; return val;
} }
bool has(const string& name); bool has(const string& name) const;
bool check() const; bool check() const;
void about(const string& message); void about(const string& message);
void printMessage() const; void printMessage() const;
void printErrors() const; void printErrors() const;
void printParams();
protected: protected:
string getString(const string& name);
void getByName(const string& name, bool space_delete, int type, void* dst) const; 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; 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); static Ptr<GlFont> get(const std::string& family, int height = 12, Weight weight = WEIGHT_NORMAL, Style style = STYLE_NORMAL);
void draw(const char* str, int len) const; void draw(const char* str, size_t len) const;
inline const std::string& family() const { return family_; } inline const std::string& family() const { return family_; }
inline int height() const { return height_; } inline int height() const { return height_; }

@ -27,12 +27,9 @@ struct CommandLineParser::Impl
vector<CommandLineParserParams> data; 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_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; vector<string> split_string(const string& str, char symbol = ' ', bool create_empty_item = false) const;
string trim_spaces(const string& str) const; string cat_string(const string& str) const;
void apply_params(const string& key, const string& value); void apply_params(const string& key, const string& value);
void apply_params(int i, string value); void apply_params(int i, string value);
@ -86,39 +83,26 @@ static void from_str(const string& str, int type, void* dst)
} }
} }
string CommandLineParser::getString(const string& name)
{
for (size_t i = 0; i < impl->data.size(); i++)
{
for (size_t j = 0; j < impl->data[i].keys.size(); j++)
{
if (name.compare(impl->data[i].keys[j]) == 0)
{
string v = impl->data[i].def_value;
return v;
}
}
}
return string();
}
void CommandLineParser::getByName(const string& name, bool space_delete, int type, void* dst) const void CommandLineParser::getByName(const string& name, bool space_delete, int type, void* dst) const
{ {
try try
{ {
string v = ((CommandLineParser*)this)->getString(name); for (size_t i = 0; i < impl->data.size(); i++)
if( v.empty() )
{
impl->error = true;
impl->error_message += "Unknown parametes " + name + "\n";
}
else
{ {
if (space_delete) for (size_t j = 0; j < impl->data[i].keys.size(); j++)
v = impl->trim_spaces(v); {
from_str(v, type, dst); if (name.compare(impl->data[i].keys[j]) == 0)
return; {
string v = impl->data[i].def_value;
if (space_delete)
v = impl->cat_string(v);
from_str(v, type, dst);
return;
}
}
} }
impl->error = true;
impl->error_message += "Unknown parametes " + name + "\n";
} }
catch (std::exception& e) catch (std::exception& e)
{ {
@ -137,7 +121,7 @@ void CommandLineParser::getByIndex(int index, bool space_delete, int type, void*
if (impl->data[i].number == index) if (impl->data[i].number == index)
{ {
string v = impl->data[i].def_value; string v = impl->data[i].def_value;
if (space_delete == true) v = impl->trim_spaces(v); if (space_delete == true) v = impl->cat_string(v);
from_str(v, type, dst); from_str(v, type, dst);
return; return;
} }
@ -170,45 +154,36 @@ static bool cmp_params(const CommandLineParserParams & p1, const CommandLinePars
CommandLineParser::CommandLineParser(int argc, const char* const argv[], const string& keys) CommandLineParser::CommandLineParser(int argc, const char* const argv[], const string& keys)
{ {
impl = new Impl(argc, argv, keys.c_str()); impl = new Impl;
} impl->refcount = 1;
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 // path to application
size_t pos_s = string(argv[0]).find_last_of("/\\"); size_t pos_s = string(argv[0]).find_last_of("/\\");
if (pos_s == string::npos) if (pos_s == string::npos)
{ {
path_to_app = ""; impl->path_to_app = "";
app_name = string(argv[0]); impl->app_name = string(argv[0]);
} }
else else
{ {
path_to_app = string(argv[0]).substr(0, pos_s); impl->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->app_name = string(argv[0]).substr(pos_s + 1, string(argv[0]).length() - pos_s);
} }
error = false; impl->error = false;
error_message = ""; impl->error_message = "";
// parse keys // parse keys
vector<string> k = split_range_string(keys, '{', '}'); vector<string> k = impl->split_range_string(keys, '{', '}');
int jj = 0; int jj = 0;
for (size_t i = 0; i < k.size(); i++) for (size_t i = 0; i < k.size(); i++)
{ {
vector<string> l = split_string(k[i], '|', true); vector<string> l = impl->split_string(k[i], '|', true);
CommandLineParserParams p; CommandLineParserParams p;
p.keys = split_string(l[0]); p.keys = impl->split_string(l[0]);
p.def_value = l[1]; p.def_value = l[1];
p.help_message = trim_spaces(l[2]); p.help_message = impl->cat_string(l[2]);
p.number = -1; p.number = -1;
if (p.keys[0][0] == '@') if (p.keys[0][0] == '@')
{ {
@ -216,7 +191,7 @@ CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* ke
jj++; jj++;
} }
data.push_back(p); impl->data.push_back(p);
} }
// parse argv // parse argv
@ -227,13 +202,13 @@ CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* ke
if (s.find('=') != string::npos && s.find('=') < s.length()) if (s.find('=') != string::npos && s.find('=') < s.length())
{ {
vector<string> k_v = split_string(s, '=', true); vector<string> k_v = impl->split_string(s, '=', true);
for (int h = 0; h < 2; h++) for (int h = 0; h < 2; h++)
{ {
if (k_v[0][0] == '-') if (k_v[0][0] == '-')
k_v[0] = k_v[0].substr(1, k_v[0].length() -1); k_v[0] = k_v[0].substr(1, k_v[0].length() -1);
} }
apply_params(k_v[0], k_v[1]); impl->apply_params(k_v[0], k_v[1]);
} }
else if (s.length() > 1 && s[0] == '-') else if (s.length() > 1 && s[0] == '-')
{ {
@ -242,16 +217,16 @@ CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* ke
if (s[0] == '-') if (s[0] == '-')
s = s.substr(1, s.length() - 1); s = s.substr(1, s.length() - 1);
} }
apply_params(s, "true"); impl->apply_params(s, "true");
} }
else if (s[0] != '-') else if (s[0] != '-')
{ {
apply_params(jj, s); impl->apply_params(jj, s);
jj++; jj++;
} }
} }
sort_params(); impl->sort_params();
} }
@ -315,7 +290,7 @@ void CommandLineParser::Impl::sort_params()
sort (data.begin(), data.end(), cmp_params); sort (data.begin(), data.end(), cmp_params);
} }
string CommandLineParser::Impl::trim_spaces(const string& str) const string CommandLineParser::Impl::cat_string(const string& str) const
{ {
int left = 0, right = (int)str.length(); int left = 0, right = (int)str.length();
while( left <= right && str[left] == ' ' ) while( left <= right && str[left] == ' ' )
@ -330,7 +305,7 @@ string CommandLineParser::getPathToApplication() const
return impl->path_to_app; return impl->path_to_app;
} }
bool CommandLineParser::has(const string& name) bool CommandLineParser::has(const string& name) const
{ {
for (size_t i = 0; i < impl->data.size(); i++) for (size_t i = 0; i < impl->data.size(); i++)
{ {
@ -358,11 +333,6 @@ void CommandLineParser::printErrors() const
} }
} }
void CommandLineParser::printParams()
{
printMessage();
}
void CommandLineParser::printMessage() const void CommandLineParser::printMessage() const
{ {
if (impl->about_message != "") if (impl->about_message != "")
@ -404,7 +374,7 @@ void CommandLineParser::printMessage() const
std::cout << ", "; std::cout << ", ";
} }
} }
string dv = impl->trim_spaces(impl->data[i].def_value); string dv = impl->cat_string(impl->data[i].def_value);
if (dv.compare("") != 0) if (dv.compare("") != 0)
{ {
std::cout << " (value:" << dv << ")"; std::cout << " (value:" << dv << ")";
@ -424,7 +394,7 @@ void CommandLineParser::printMessage() const
std::cout << k; std::cout << k;
string dv = impl->trim_spaces(impl->data[i].def_value); string dv = impl->cat_string(impl->data[i].def_value);
if (dv.compare("") != 0) if (dv.compare("") != 0)
{ {
std::cout << " (value:" << dv << ")"; std::cout << " (value:" << dv << ")";

@ -267,11 +267,6 @@ void cv::split(InputArray _m, OutputArrayOfArrays _mv)
split(m, dst); 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) void cv::merge(const Mat* mv, size_t n, OutputArray _dst)
{ {
CV_Assert( mv && n > 0 ); CV_Assert( mv && n > 0 );
@ -354,11 +349,6 @@ void cv::merge(InputArrayOfArrays _mv, OutputArray _dst)
merge(!mv.empty() ? &mv[0] : 0, mv.size(), _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 * * 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** pts, const int* npts, int ncontours, bool isClosed, void polylines( Mat& img, const Point* const* pts, const int* npts, int ncontours, bool isClosed,
const Scalar& color, int thickness, int line_type, int shift ) const Scalar& color, int thickness, int line_type, int shift )
{ {
if( line_type == CV_AA && img.depth() != CV_8U ) 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 #endif
} }
void cv::GlFont::draw(const char* str, int len) const void cv::GlFont::draw(const char* str, size_t len) const
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
(void)str; (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]); 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(), (int)str.length()); font->draw(str.c_str(), str.length());
glPopAttrib(); glPopAttrib();
#endif #endif

@ -636,10 +636,8 @@ CV_EXPORTS_W void accumulateWeighted( InputArray src, InputOutputArray dst,
//! computes PSNR image/video quality metric //! computes PSNR image/video quality metric
CV_EXPORTS_W double PSNR(InputArray src1, InputArray src2); 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, CV_EXPORTS_W Point2d phaseCorrelate(InputArray src1, InputArray src2,
InputArray window, CV_OUT double* response CV_WRAP_DEFAULT(0)); InputArray window = noArray(), CV_OUT double* response=0);
CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type); CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type);
//! type of the threshold operation //! type of the threshold operation

@ -568,10 +568,6 @@ cv::Point2d cv::phaseCorrelate(InputArray _src1, InputArray _src2, InputArray _w
return (center - t); 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) void cv::createHanningWindow(OutputArray _dst, cv::Size winSize, int type)
{ {

@ -63,6 +63,9 @@ public:
virtual void setRadius(int val) { radius_ = val; } virtual void setRadius(int val) { radius_ = val; }
virtual int radius() const { return radius_; } virtual int radius() const { return radius_; }
virtual void deblur(int idx, Mat &frame) = 0;
// data from stabilizer // data from stabilizer
virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; } virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; }
@ -74,9 +77,6 @@ public:
virtual void setBlurrinessRates(const std::vector<float> &val) { blurrinessRates_ = &val; } virtual void setBlurrinessRates(const std::vector<float> &val) { blurrinessRates_ = &val; }
virtual const std::vector<float>& blurrinessRates() const { return *blurrinessRates_; } virtual const std::vector<float>& blurrinessRates() const { return *blurrinessRates_; }
virtual void update() {}
virtual void deblur(int idx, Mat &frame) = 0;
protected: protected:
int radius_; int radius_;
const std::vector<Mat> *frames_; const std::vector<Mat> *frames_;

Loading…
Cancel
Save