| OpenCV 5.0.0alpha Open Source Computer Vision

Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
cv::LineIterator Class Reference
Image Processing » Drawing Functions

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

`#include <opencv2/imgproc.hpp>`

Collaboration diagram for cv::LineIterator:

## Public Member Functions
| LineIterator (const Mat &img, Point pt1, Point pt2, int connectivity=8, bool leftToRight=false)
| Initializes iterator object for the given line and image.
| LineIterator (Point pt1, Point pt2, int connectivity=8, bool leftToRight=false)
| LineIterator (Rect boundingAreaRect, Point pt1, Point pt2, int connectivity=8, bool leftToRight=false)
| LineIterator (Size boundingAreaSize, Point pt1, Point pt2, int connectivity=8, bool leftToRight=false)
void | init (const Mat *img, Rect boundingAreaRect, Point pt1, Point pt2, int connectivity, bool leftToRight)
uchar * | operator* ()
| Returns pointer to the current pixel.
LineIterator & | operator++ ()
| Moves iterator to the next pixel on the line.
LineIterator | operator++ (int)
| Moves iterator to the next pixel on the line.
Point | pos () const
| Returns coordinates of the current pixel.

## Public Attributes
int | count
int | elemSize
int | err
int | minusDelta
int | minusShift
int | minusStep
Point | p
int | plusDelta
int | plusShift
int | plusStep
bool | ptmode
uchar * | ptr
const uchar * | ptr0
int | step

## Detailed 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);
}
cv::LineIterator
Class for iterating over all pixels on a raster line segment.
Definition imgproc.hpp:5129
cv::LineIterator::count
int count
Definition imgproc.hpp:5199
cv::LineIterator::pos
Point pos() const
Returns coordinates of the current pixel.
cv::Vec
Template class for short numerical vectors, a partial case of Matx.
Definition matx.hpp:379
CV_Assert
#define CV_Assert(expr)
Checks a condition at runtime and throws exception if it fails.
Definition exception.hpp:198

## Constructor & Destructor Documentation

## ◆ LineIterator() [1/4]

cv::LineIterator::LineIterator | ( | const Mat & | img,
|  | Point | pt1,
|  | Point | pt2,
|  | int | connectivity = 8,
|  | bool | leftToRight = false )
| inline

Initializes iterator object for the given line and image.

The returned iterator can be used to traverse all pixels on a line that connects the given two points. The line will be clipped on the image boundaries.

Parameters

  img | Underlying image.
  pt1 | First endpoint of the line.
  pt2 | The other endpoint of the line.
  connectivity | Pixel connectivity of the iterator. Valid values are 4 (iterator can move up, down, left and right) and 8 (iterator can also move diagonally).
  leftToRight | If true, the line is traversed from the leftmost endpoint to the rightmost endpoint. Otherwise, the line is traversed from `pt1` to `pt2`.

## ◆ LineIterator() [2/4]

cv::LineIterator::LineIterator | ( | Point | pt1,
|  | Point | pt2,
|  | int | connectivity = 8,
|  | bool | leftToRight = false )
| inline

## ◆ LineIterator() [3/4]

cv::LineIterator::LineIterator | ( | Size | boundingAreaSize,
|  | Point | pt1,
|  | Point | pt2,
|  | int | connectivity = 8,
|  | bool | leftToRight = false )
| inline

## ◆ LineIterator() [4/4]

cv::LineIterator::LineIterator | ( | Rect | boundingAreaRect,
|  | Point | pt1,
|  | Point | pt2,
|  | int | connectivity = 8,
|  | bool | leftToRight = false )
| inline

## Member Function Documentation

## ◆ init()

void cv::LineIterator::init | ( | const Mat * | img,
|  | Rect | boundingAreaRect,
|  | Point | pt1,
|  | Point | pt2,
|  | int | connectivity,
|  | bool | leftToRight )

## ◆ operator*()

uchar * cv::LineIterator::operator* | ( |  | ) |

Returns pointer to the current pixel.

## ◆ operator++() [1/2]

LineIterator & cv::LineIterator::operator++ | ( |  | ) |

Moves iterator to the next pixel on the line.

This is the prefix version (++it).

## ◆ operator++() [2/2]

LineIterator cv::LineIterator::operator++ | ( | int |  | ) |

Moves iterator to the next pixel on the line.

This is the postfix version (it++).

## ◆ pos()

Point cv::LineIterator::pos | ( |  | ) | const

Returns coordinates of the current pixel.

## Member Data Documentation

## ◆ count

int cv::LineIterator::count

## ◆ elemSize

int cv::LineIterator::elemSize

## ◆ err

int cv::LineIterator::err

## ◆ minusDelta

int cv::LineIterator::minusDelta

## ◆ minusShift

int cv::LineIterator::minusShift

## ◆ minusStep

int cv::LineIterator::minusStep

## ◆ p

Point cv::LineIterator::p

## ◆ plusDelta

int cv::LineIterator::plusDelta

## ◆ plusShift

int cv::LineIterator::plusShift

## ◆ plusStep

int cv::LineIterator::plusStep

## ◆ ptmode

bool cv::LineIterator::ptmode

## ◆ ptr

uchar* cv::LineIterator::ptr

## ◆ ptr0

const uchar* cv::LineIterator::ptr0

## ◆ step

int cv::LineIterator::step

The documentation for this class was generated from the following file:

- opencv2/imgproc.hpp