#include "precomp.hpp"
#include <fstream>
+#include <queue>
#if defined _MSC_VER && _MSC_VER == 1500
typedef int int_fast32_t;
namespace cv
{
+// Deletes a tree of ERStat regions starting at root. Used only
+// internally to this implementation.
+static void deleteERStatTree(ERStat* root) {
+ queue<ERStat*> to_delete;
+ to_delete.push(root);
+ while (!to_delete.empty()) {
+ ERStat* n = to_delete.front();
+ to_delete.pop();
+ ERStat* c = n->child;
+ if (c != NULL) {
+ to_delete.push(c);
+ ERStat* sibling = c->next;
+ while (sibling != NULL) {
+ to_delete.push(sibling);
+ sibling = sibling->next;
+ }
+ }
+ delete n;
+ }
+}
+
ERStat::ERStat(int init_level, int init_pixel, int init_x, int init_y) : pixel(init_pixel),
level(init_level), area(0), perimeter(0), euler(0), probability(1.0),
parent(0), child(0), next(0), prev(0), local_maxima(0),
delete(stat->crossings);
stat->crossings = NULL;
}
- delete stat;
+ deleteERStatTree(stat);
}
er_stack.clear();