我正在完成这个程序,主要是计算图像中的凸性缺陷。我似乎无法清除我对以下内容的困惑 -
*vector<vector<Point>> hull( contours.size() );
vector<vector<int> > hullsI(contours.size());
vector<vector<Vec4i>> convdefect(contours.size());*
上述计划的链接如下: - Calculating convexityDefects using OpenCV 2.4 in c++
直观地我知道什么向量在物理学术语中意味着但是有人可以用简单的概念解释我在opencv中的向量概念是什么意思(特别是点,整数和vec4i)以及上述术语之间有什么区别。任何链接或建议都会非常有用。感谢
答案 0 :(得分:4)
向量是std::vector。您引用的其他数据结构很容易在the documentation of OpenCV's basic structures中找到。
但是我注意到code you linked to包含cv::vector
。
如果你查看OpenCV 2.4.9's core.hpp,你会发现这个
#include <vector>
...
namespace cv {
...
using std::vector;
...
}
vector
命名空间中显示cv
;也就是说,cv::vector
实际上是std::vector
。我认为core.hpp的作者会这样做是为了避免代码中的内部混乱 - user code创建cv::vector
只会造成我认为的混乱,特别是在cv::vector
时与std::vector
和vector
一起使用,好像它们可能有所不同 - 请查看该代码中的摘录:
cv::vector<cv::Vec4i> hierarchy;
std::vector<std::vector<cv::Point> > contours;
...
vector<cv::vector<cv::Point> >hull( contours.size() );
事实上,根据我所看到的头文件重组方式,我不认为cv::vector
将存在于下一个主要版本的OpenCV(3.0.0)中。