OpenCV Vec数据类型

时间:2011-08-03 17:36:48

标签: c++ opencv

我正在使用C ++中的OpenCV创建不同的抖动技术。 我的当前代码只有在我的Mat是浮点数时才有效。 例如,如果我有这样的话:

Mat image;
cv::Vec3f pixel= image.at< float,3> 
在这种情况下,

图像目前是浮点数,更具体地说,它的类型是CV_32FC3。 我想把它改成这样的东西:

cv::Vec3f pixel= image.at< "Datatype",3>

无论如何将数据类型表示为我可以修改的变量,具体取决于Mat的数据类型?

1 个答案:

答案 0 :(得分:0)

不是真的。您正在使用模板,编译器必须在编译时了解这些模板。这意味着数据类型无法在运行时更改(与MS .NET不同)。

将模板视为“#define”的C ++等价物。模板化函数被编译并且被编译。对于使用的每种数据类型都重复。

您必须迟早指定您使用的每种数据类型。

在你的情况下,Vec3f实际上是“Vec&lt; float,3&gt;”。您可以将事物置于模板化函数中,并使用模板符号代替“float”,以用于“Vec&lt;&gt;”和“image.at”。