这是ORB特征提取里面出现的代码。
首先 desctype是事先定义的。
typedef vector<uint32_t> DescType;
uint32_t 含义是 unsigned int ,int本身4个字节,一个字节八个bit,共32个bit,这种命名方式方便直接知道变量二进制位数。
例如:typedef unsigned long __uint64_t , long 8字节64个bit
ORB特征提取中,一个特征点的描述子需要512个点,也就是256个点对,比较256个点对的灰度值,得到一个长256的二进制串的描述子,这里不清楚可以去看一下ORB特征提取匹配的原理。
DescType desc(8, 0)
根据之上的定义,这行代码等价于
vector<uint32_t> desc(8, 0)
vector desc(8,0) 赋值代表了一个8维unsigned int 的Vector, 且初始值都为0。
desc有8个int元素,每个int4个字节,每个字节8个bit,8维x4字节x8bit,等于一个256bit的容器,刚好放下一个特征点的描述子。可以认为定义了单个描述子类型。
扫描二维码关注公众号,回复:
14425004 查看本文章

代码中还出现了
vector<DescType> &descriptors//这里其实是一个二维Vector
类型为DescTyped的动态数组Vector,用来放入一帧所有的描述子,且下标与vector<cv::KeyPoint> &keypoints特征点的Vector对应。