pub trait LineIteratorTraitConst {
Show 15 methods fn as_raw_LineIterator(&self) -> *const c_void; fn ptr0(&self) -> *const u8 { ... } fn step(&self) -> i32 { ... } fn elem_size(&self) -> i32 { ... } fn err(&self) -> i32 { ... } fn count(&self) -> i32 { ... } fn minus_delta(&self) -> i32 { ... } fn plus_delta(&self) -> i32 { ... } fn minus_step(&self) -> i32 { ... } fn plus_step(&self) -> i32 { ... } fn minus_shift(&self) -> i32 { ... } fn plus_shift(&self) -> i32 { ... } fn p(&self) -> Point { ... } fn ptmode(&self) -> bool { ... } fn pos(&self) -> Result<Point> { ... }
}
Expand description

Class for iterating over all pixels on a raster line segment.

The class LineIterator is used to get each pixel of a raster line connecting two specified points. It can be treated as a versatile implementation of the Bresenham algorithm where you can stop at each pixel and do some extra processing, for example, grab pixel values along the line or draw a line with an effect (for example, with XOR operation).

The number of pixels along the line is stored in LineIterator::count. The method LineIterator::pos returns the current position in the image:

// grabs pixels along the line (pt1, pt2)
// from 8-bit 3-channel image to the buffer
LineIterator it(img, pt1, pt2, 8);
LineIterator it2 = it;
vector<Vec3b> buf(it.count);
 
for(int i = 0; i < it.count; i++, ++it)
   buf[i] = *(const Vec3b*)*it;
 
// alternative way of iterating through the line
for(int i = 0; i < it2.count; i++, ++it2)
{
   Vec3b val = img.at<Vec3b>(it2.pos());
   CV_Assert(buf[i] == val);
}

Required Methods

Provided Methods

Returns coordinates of the current pixel.

Implementors