Vector<Vec3b> 与 OpenCV 中 Vector<int> 的区别

Posted

技术标签:

【中文标题】Vector<Vec3b> 与 OpenCV 中 Vector<int> 的区别【英文标题】:Vector<Vec3b> difference with Vector<int> in OpenCV 【发布时间】:2016-02-26 02:34:35 【问题描述】:

我的项目是关于曲棍球桌上的移动冰球检测和位置查找。我需要使用HoughCircles 来检测冰球的圆形。 但是对于这个 hough 算法,我需要创建一个Vector。我熟悉Vector 概念及其工作原理(基本),但存在区分例如Vector&lt;int&gt; VecVector&lt;Vec3b&gt; Vec 的问题。

有没有可能让我知道它们在含义和应用上的区别是什么?

【问题讨论】:

我发布了一个答案。如果您需要更多详细信息,您应该更好地解释您想要做什么,为什么需要它们,并通过一个小代码示例更好地说明 亲爱的 Miki 非常感谢您,这很清楚,非常有帮助。我在教科书和其他教程中看到了这种向量定义,我期待在定义 VECTOR 时,我们定义了 VECTOR 的类型和名称,所以我对这个新名称感到困惑,而 VECTOR 确定我问你们是否有帮助我关于这种定义。 【参考方案1】:

注意Vectorvector 是不同的。 vectorstd::vector,而 Vectorcv::Vector。即使在实践中差异很小,但它们确实是不同的东西。

我假设您的意思是 std::vector,但在这种情况下,这也适用于 cv::Vector


vector&lt;int&gt; 是一个整数向量。这没什么好看的。

一个vector&lt;Vec3b&gt;是一个cv::Vec3b的向量,它是一个OpenCV结构,包含3个ucharunsigned char),即一个8位的类型,可以包含从0到255的数据。它在事实定义为cv::Vec_&lt;uchar, 3&gt;。 cv::Vec 是一个模板类,表示短数值向量,最多 4 个元素,但这在这里并不重要。

A Vec3b 通常在 OpenCV 中用于存储像素的颜色,通常是 B、G、R 三元组。

【讨论】:

我自己再好不过了。 Vec3bMatx的定义也可以参考documentation。

以上是关于Vector<Vec3b> 与 OpenCV 中 Vector<int> 的区别的主要内容,如果未能解决你的问题,请参考以下文章

std::vector<cv::Vec3b> 到 cv::Mat

Vec3b

将 vec3b 转换为 mat

设计一个集合栈

OpenCV转为灰度图像 & 访问像素方法

OpenCV Vec3b绫诲瀷鐨勫惈涔変笌浣跨敤