在这个 openCV 循环中'faces.size()'是什么意思?
What does 'faces.size()' mean in this openCV loop?
我正在尝试自学opencv和c++,这个人脸和眼睛检测的示例程序包括以下行:
for(size_t i = 0; i < faces.size(); i++)
我不明白faces.size()是什么意思,从那以后,在什么时候我可以大于faces.size().
它是如何获得数值的
在程序的其余部分中,我看到了很多面的实例,但我唯一一次看到size是作为face_cascade.detectMultiScale的参数。不过它是大写的,这让我认为它与faces.size()无关。
faces.size()
返回"面"的大小,即"面"中有多少面。
一般来说,一个基本的for循环的结构如下:
for ( init; condition; increment )
{
//your code...
}
只要条件为true,即只要"i"小于faces.size()(可能是"10"或其他整数值),它就会运行。
"i"将变得更大,因为每次循环都会向其添加迭代1。这是由i++指令管理的。
我建议,如果你在循环语法方面遇到困难,openCV可能不是开始学习C++的最佳场所,因为许多示例都期望比"初学者"更高的能力水平(有意或无意地通过简单的糟糕编码/缺乏注释等)
faces
在此处填充:
//-- Detect faces
face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CASCADE_SCALE_IMAGE, Size(30, 30) );
根据OpenCV文档:
void cv::CascadeClassifier::detectMultiScale ( InputArray image,
std::vector< Rect > & objects,
double scaleFactor = 1.1,
int minNeighbors = 3,
int flags = 0,
Size minSize = Size(),
Size maxSize = Size()
)
其中std::vector< Rect > & objects
(在您的情况下是人脸)是
矩形的矢量,其中每个矩形包含检测到的对象,则矩形可以部分地在原始图像之外。
正如您所看到的,objects
是通过引用传递的,以允许在函数中对其进行修改。
另外,std::vector<Type>::size()
会给你向量的大小,所以,i<faces.size() is necessary to get the index i inside the bounds of the vector
。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思