OpenCV 4.10.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:4932
int count
定义 imgproc.hpp:5002
Point pos() const
返回当前像素的坐标。
用于短数值向量的模板类,是 Matx 的部分情况。
定义 matx.hpp:369
#define CV_Assert(expr)
在运行时检查条件,如果失败则抛出异常。
定义 base.hpp:342

构造函数和析构函数文档

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

成员函数文档

◆ init()

void cv::LineIterator::init ( const Mat img,
Rect  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

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