2011-08-03 36 views
0

我正在使用C++中的OpenCV创建不同的抖动技术。 我的当前代码只有在我的垫子是浮动时才起作用。 例如说,如果我有这样的事情:在这种情况下OpenCV Vec数据类型

Mat image; 
cv::Vec3f pixel= image.at< float,3> 

图像是目前的浮动,更专门为它是CV_32FC3类型。 我想改变它的东西是这样的:

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

反正是有来表示数据类型的,我可以根据对垫的数据类型修改变量?

回答

0

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

将模板看作C++等价的“#define”。一个模板化函数被编译&为每个使用的数据类型重复。

您必须指定您使用的每个单独的数据类型,迟早。

就你而言,Vec3f实际上是“Vec < float,3>”。您可以将事物置于模板化功能中,并使用模板符号代替“Vec <>”和“image.at”中的“float”。