OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
cv::LineIterator 类参考

用于迭代光栅线段上所有像素的类。 更多…

#include <opencv2/imgproc.hpp>

cv::LineIterator 的协作图

公共成员函数

 LineIterator (const Mat &img, Point pt1, Point pt2, int connectivity=8, bool leftToRight=false)
 为给定的线和图像初始化迭代器对象。
 
 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)
 
ucharoperator* ()
 返回指向当前像素的指针。
 
LineIteratoroperator++ ()
 将迭代器移动到线上的下一个像素。
 
LineIterator operator++ (int)
 将迭代器移动到线上的下一个像素。
 
Point pos () const
 返回当前像素的坐标。
 

公共属性

int count
 
int elemSize
 
int err
 
int minusDelta
 
int minusShift
 
int minusStep
 
Point p
 
int plusDelta
 
int plusShift
 
int plusStep
 
bool ptmode
 
ucharptr
 
const ucharptr0
 
int step
 

详细描述

用于迭代光栅线段上所有像素的类。

LineIterator 类用于获取连接两个指定点的光栅线上的每个像素。它可以被视为 Bresenham 算法的多功能实现,您可以在每个像素处停止并进行一些额外的处理,例如,沿线获取像素值或绘制具有效果的线(例如,使用 XOR 运算)。

沿线上的像素数量存储在 LineIterator::count 中。LineIterator::pos 方法返回图像中的当前位置。

// 获取沿线 (pt1, pt2) 的像素
// 从 8 位 3 通道图像到缓冲区
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;
// 迭代遍历该线的替代方法
for(int i = 0; i < it2.count; i++, ++it2)
{
Vec3b val = img.at<Vec3b>(it2.pos());
CV_Assert(buf[i] == val);
}
用于迭代光栅线段上所有像素的类。
定义 imgproc.hpp:4963
int count
定义 imgproc.hpp:5033
Point pos() const
返回当前像素的坐标。
短数值向量的模板类,是 Matx 的一个特例。
定义 matx.hpp:369
#define CV_Assert(expr)
在运行时检查条件,如果失败则抛出异常。
定义 base.hpp:359

构造函数和析构函数文档

◆ LineIterator() [1/4]

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

为给定的线和图像初始化迭代器对象。

返回的迭代器可用于遍历连接给定两点的线上的所有像素。该线将在图像边界上裁剪。

参数
img底层图像。
pt1线的第一个端点。
pt2线的另一个端点。
connectivity迭代器的像素连通性。有效值为 4(迭代器可以向上、向下、向左和向右移动)和 8(迭代器也可以对角线移动)。
leftToRight如果为真,则从最左端点到最右端点遍历该线。否则,从 pt1pt2 遍历该线。

◆ 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 ( 矩形 boundingAreaRect,
Point pt1,
Point pt2,
int connectivity = 8,
bool leftToRight = false )
inline

成员函数文档

◆ init()

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

◆ operator*()

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

返回指向当前像素的指针。

◆ operator++() [1/2]

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

将迭代器移动到线上的下一个像素。

这是前缀版本 (++it)。

◆ operator++() [2/2]

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

将迭代器移动到线上的下一个像素。

这是后缀版本 (it++)。

◆ pos()

Point cv::LineIterator::pos ( ) const

返回当前像素的坐标。

成员数据文档

◆ 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

此类的文档是从以下文件生成的