OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
没有匹配项
公共成员函数 | 公共属性 | 受保护的属性 | 所有成员列表
cv::NAryMatIterator 类参考

n 元多维数组迭代器。 更多...

#include <opencv2/core/mat.hpp>

cv::NAryMatIterator 协作图

公共成员函数

 NAryMatIterator ()
 默认构造函数
 
 NAryMatIterator (const Mat **arrays, Mat *planes, int narrays=-1)
 接受任意数量的 n 维矩阵的完整构造函数
 
 NAryMatIterator (const Mat **arrays, uchar **ptrs, int narrays=-1)
 接受任意数量的 n 维矩阵的完整构造函数
 
void init (const Mat **arrays, Mat *planes, uchar **ptrs, int narrays=-1)
 单独的迭代器初始化方法
 
NAryMatIteratoroperator++ ()
 继续到每个迭代矩阵的下一个平面
 
NAryMatIterator operator++ (int)
 继续到每个迭代矩阵的下一个平面(后缀增量运算符)
 

公共属性

const Mat ** arrays
 迭代的数组
 
int narrays
 数组数量
 
size_t nplanes
 迭代器步进的超平面数量
 
Matplanes
 当前平面
 
uchar ** ptrs
 数据指针
 
size_t size
 每个段的大小(以元素为单位)
 

受保护的属性

size_t idx
 
int iterdepth
 

详细说明

n 元多维数组迭代器。

使用此类来实现对多维数组的一元、二元和一般 n 元逐元素运算。 n 元函数的一些参数可能是连续数组,另一些则可能不是。可以使用传统的 MatIterator 来处理每个数组,但在每次小运算后递增所有迭代器可能会带来很大的开销。在这种情况下,请考虑使用 NAryMatIterator 同时迭代多个矩阵,只要它们具有相同的几何形状(维数和所有维数大小都相同)。在每次迭代中,it.planes[0]it.planes[1]、... 将是相应矩阵的切片。

以下示例说明了如何计算归一化和阈值的 3D 颜色直方图

void computeNormalizedColorHist(const Mat& image, Mat& hist, int N, double minProb)
{
const int histSize[] = {N, N, N};
// 确保直方图具有适当的大小和类型
hist.create(3, histSize, CV_32F);
// 并清除它
hist = Scalar(0);
// 以下循环假定图像
// 是一个 8 位 3 通道。检查一下。
CV_Assert(image.type() == CV_8UC3);
it_end = image.end<Vec3b>();
for( ; it != it_end; ++it )
{
const Vec3b& pix = *it;
hist.at<float>(pix[0]*N/256, pix[1]*N/256, pix[2]*N/256) += 1.f;
}
minProb *= image.rows*image.cols;
// 初始化迭代器(样式与 STL 不同)。
// 初始化后,迭代器将包含
// 迭代器将遍历的切片或平面数量。
// 它同时递增多个矩阵的迭代器
// 作为以空终止符分隔的指针列表提供
const Mat* arrays[] = {&hist, 0};
Mat planes[1];
double s = 0;
// 遍历矩阵。在每次迭代中
// itNAry.planes[i](类型为 Mat)将设置为
// 传递到迭代器构造函数的第 i 个 n 维矩阵的当前平面。
for(int p = 0; p < itNAry.nplanes; p++, ++itNAry)
{
threshold(itNAry.planes[0], itNAry.planes[0], minProb, 0, THRESH_TOZERO);
s += sum(itNAry.planes[0])[0];
}
s = 1./s;
for(int p = 0; p < itNAry.nplanes; p++, ++itNAry)
itNAry.planes[0] *= s;
}
矩阵只读迭代器。
定义 mat.hpp:3149
n 维密集数组类
定义 mat.hpp:812
MatIterator_< _Tp > end()
返回矩阵迭代器并将其设置为最后一个矩阵元素之后。
void create(int rows, int cols, int type)
如果需要,分配新的数组数据。
MatIterator_< _Tp > begin()
返回矩阵迭代器并将其设置为第一个矩阵元素。
_Tp & at(int i0=0)
返回对指定数组元素的引用。
int cols
定义 mat.hpp:2138
int rows
行和列的数量,或者当矩阵具有超过 2 个维度时为 (-1, -1)
定义 mat.hpp:2138
int type() const
返回矩阵元素的类型。
const Mat ** arrays
迭代的数组
定义 mat.hpp:3478
Mat * planes
当前平面
定义 mat.hpp:3480
NAryMatIterator()
默认构造函数
用于短数值向量的模板类,Matx 的特例。
定义 matx.hpp:369
Scalar sum(InputArray src)
计算数组元素的总和。
Scalar_< double > Scalar
定义 types.hpp:702
#define CV_32F
定义 interface.h:78
#define CV_8UC3
定义 interface.h:90
#define CV_Assert(expr)
在运行时检查条件,如果失败则抛出异常。
定义 base.hpp:342
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
对每个数组元素应用固定级别的阈值。
@ THRESH_TOZERO
定义 imgproc.hpp:328

构造函数和析构函数文档

◆ NAryMatIterator() [1/3]

cv::NAryMatIterator::NAryMatIterator ( )

默认构造函数

◆ NAryMatIterator() [2/3]

cv::NAryMatIterator::NAryMatIterator ( const Mat **  arrays,
uchar **  ptrs,
int  narrays = -1 
)

接受任意数量的 n 维矩阵的完整构造函数

◆ NAryMatIterator() [3/3]

cv::NAryMatIterator::NAryMatIterator ( const Mat **  arrays,
Mat planes,
int  narrays = -1 
)

接受任意数量的 n 维矩阵的完整构造函数

成员函数文档

◆ init()

void cv::NAryMatIterator::init ( const Mat **  arrays,
Mat planes,
uchar **  ptrs,
int  narrays = -1 
)

单独的迭代器初始化方法

◆ operator++() [1/2]

NAryMatIterator & cv::NAryMatIterator::operator++ ( )

继续到每个迭代矩阵的下一个平面

◆ operator++() [2/2]

NAryMatIterator cv::NAryMatIterator::operator++ ( int  )

继续到每个迭代矩阵的下一个平面(后缀增量运算符)

成员数据文档

◆ arrays

const Mat** cv::NAryMatIterator::arrays

迭代的数组

◆ idx

size_t cv::NAryMatIterator::idx
受保护

◆ iterdepth

int cv::NAryMatIterator::iterdepth
受保护

◆ narrays

int cv::NAryMatIterator::narrays

数组数量

◆ nplanes

size_t cv::NAryMatIterator::nplanes

迭代器步进的超平面数量

◆ planes

Mat* cv::NAryMatIterator::planes

当前平面

◆ ptrs

uchar** cv::NAryMatIterator::ptrs

数据指针

◆ size

size_t cv::NAryMatIterator::size

每个段的大小(以元素为单位)


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