Trait opencv::prelude::LineIteratorTraitConst
source · [−]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);
}