OpenCV 4.12.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:5019
int count
定義 imgproc.hpp:5089
Point pos() const
返回當前畫素的座標。
短數值向量的模板類,Matx 的部分情況。
定義 matx.hpp:369
#define CV_Assert(expr)
在執行時檢查條件,如果失敗則丟擲異常。
定義 base.hpp:423

建構函式 & 解構函式文件

◆ 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如果為 true,則該線從最左邊的端點遍歷到最右邊的端點。 否則,該線從 pt1 遍歷到 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

成員函式文件

◆ 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

此類文件由以下檔案生成