Commit 616ec701210c0f99b1c15ea8f8673579ee330aba

Authored by Charles Otto
1 parent cadd9f8c

Add a transform for logging nearest-neighbor data.

Showing 1 changed file with 44 additions and 0 deletions
openbr/plugins/cluster.cpp
... ... @@ -242,6 +242,50 @@ class CollectNNTransform : public UntrainableMetaTransform
242 242 };
243 243 BR_REGISTER(Transform, CollectNNTransform)
244 244  
  245 +class LogNNTransform : public TimeVaryingTransform
  246 +{
  247 + Q_OBJECT
  248 +
  249 + Q_PROPERTY(QString fileName READ get_fileName WRITE set_fileName RESET reset_fileName STORED false)
  250 + BR_PROPERTY(QString, fileName, "")
  251 +
  252 + QFile out;
  253 + void projectUpdate(const Template &src, Template &dst)
  254 + {
  255 + dst = src;
  256 +
  257 + Neighbors neighbors = dst.file.get<Neighbors>("neighbors");
  258 + if (neighbors.isEmpty() )
  259 + return;
  260 +
  261 + QString aLine;
  262 + aLine.append(QString::number(neighbors[0].first)+":"+QString::number(neighbors[0].second));
  263 + for (int i=1; i < neighbors.size();i++)
  264 + aLine.append(","+QString::number(neighbors[i].first)+":"+QString::number(neighbors[i].second));
  265 +
  266 + aLine += "\n";
  267 + out.write(qPrintable(aLine));
  268 + }
  269 +
  270 + void init()
  271 + {
  272 + if (!fileName.isEmpty()) {
  273 + out.setFileName(fileName);
  274 + out.open(QIODevice::WriteOnly);
  275 + }
  276 + }
  277 +
  278 + void finalize(TemplateList &output)
  279 + {
  280 + (void) output;
  281 + out.close();
  282 + }
  283 +
  284 +public:
  285 + LogNNTransform() : TimeVaryingTransform(false, false) {}
  286 +};
  287 +BR_REGISTER(Transform, LogNNTransform)
  288 +
245 289 } // namespace br
246 290  
247 291 #include "cluster.moc"
... ...