34#include <drain/image/ProbingControl.h>
38#include "ImageChannel.h"
49typedef std::list<drain::image::Position> Contour;
71template <
class S,
class D>
77 Direction::value_t dir = Direction::NONE;
80 Direction::value_t startDir = Direction::NONE;
102 void setStart(
const Position & startPos, Direction::value_t startDir){
105 this->startPos = startPos;
106 this->startDir = startDir;
114 mout.
accept<LOG_WARNING>(
"From ", pos,
" to: ", Direction::arrows[dir],
' ',
'<', dir ,
'>');
118 if (
control.move(p, dir) == ProberControl::MOVE_ACCEPTED){
119 if (
control.isValidPixel(src, p)){
120 mout.
accept<LOG_WARNING>(p);
122 contour.push_back(pos);
123 dir = DIR_TURN_DEG(dir, 225);
132 mout.
pending<LOG_WARNING>(
" outside segment, keeping ", pos);
135 dir = DIR_TURN_DEG(dir, 45);
139 mout.
reject<LOG_WARNING>(
"illegal move");
141 dir = DIR_TURN_DEG(dir, 45);
145 return (! (dir == startDir) && (pos == startPos) );
164 setStart(startPos, startDir);
166 mout.
accept<LOG_WARNING>(
"Start ", pos,
':', Direction::arrows[dir],
' ',
'<', dir ,
'>');
170 mout.
accept<LOG_WARNING>(
"Tracking ", pos,
':', Direction::arrows[dir]);
204 mout.
note(
"Writing debug image");
206 ImageFile::write(
control.markerImage,
"edge.png");
259template <
class S,
class D>
260std::ostream & operator<<(std::ostream & ostr,
const EdgeTracker<S,D> & prober){
LogSourc e is the means for a function or any program segment to "connect" to a Log.
Definition Log.h:313
Logger & pending(const TT &... args)
Report a conditional accept/reject, to be completed next.
Definition Log.h:597
Logger & note(const TT &... args)
For top-level information.
Definition Log.h:490
Logger & reject(const TT &... args)
Some input has been rejected, for example by a syntax.
Definition Log.h:611
Logger & accept(const TT &... args)
Some input has been accepted, for example by a syntax.
Definition Log.h:583
Image with static geometry.
Definition ImageChannel.h:58
Container for parameters of SegmentProber.
Definition EdgeTracker.h:72
ProberControl & control
A convenience function for traversing a whole image.
Definition EdgeTracker.h:242
void track(const Position &startPos, Direction::value_t startDir)
Definition EdgeTracker.h:160
virtual void init()
Called after src and dst have been set, but before processing. See clear().
Definition EdgeTracker.h:219
virtual void setGeometry(size_t width, size_t height, size_t imageChannels=1, size_t alphaChannels=0)
Resizes the image, keeps the current type.
Definition Image.h:87
Definition DataSelector.cpp:1277
Definition Direction.h:46
Container for parameters of SegmentProber.
Definition ProbingControl.h:60