我正在使用C ++中的OpenCV创建不同的抖动技术。 我的当前代码只有在我的Mat是浮点数时才有效。 例如,如果我有这样的话:
Mat image;
cv::Vec3f pixel= image.at< float,3>
在这种情况下,图像目前是浮点数,更具体地说,它的类型是CV_32FC3
。
我想把它改成这样的东西:
cv::Vec3f pixel= image.at< "Datatype",3>
无论如何将数据类型表示为我可以修改的变量,具体取决于Mat的数据类型?
答案 0 :(得分:0)
不是真的。您正在使用模板,编译器必须在编译时了解这些模板。这意味着数据类型无法在运行时更改(与MS .NET不同)。
将模板视为“#define”的C ++等价物。模板化函数被编译并且被编译。对于使用的每种数据类型都重复。
您必须迟早指定您使用的每种数据类型。
在你的情况下,Vec3f实际上是“Vec&lt; float,3&gt;”。您可以将事物置于模板化函数中,并使用模板符号代替“float”,以用于“Vec&lt;&gt;”和“image.at”。