因此,我正在使用opencv中的类Mat
来编写我正在编写的程序。 Mat
看起来是这样的:需要跟踪opencv Mats的类型
class Mat {
public:
Mat(int width, int height, int type);
template <typename T> T getElt(int x, int y);
int depth();
...
}
在构造函数中的类型指定在Mat
元素是否float
S,int
S,等,以及在图像中的信道数。返回用于存储图像元素的数据类型。
不幸的是,我必须在我的代码中调用getElt()
。每当我这样做,我使用switch
语句来检查Mat
的深度,所以我可以用适当的模板参数调用getElt()
。这样做是相当冗长的,所以我想知道是否有更好的方法来做到这一点。我可以为Mat
创建一个容器,并使用模板魔法创建一个返回类型而不是值的方法吗?或者我可以使用宏来使事情更有效和合乎逻辑?
我宁可没有子类Mat
,因为除了getElt()
之外还有几种方法,对此我有同样的问题。
编辑:使描述更准确。
如果用“错误的”模板参数调用它,会发生什么?你会得到垃圾还是结果被转换为请求的类型?如果后者,你可能总是使用双重类型? – zvrba 2010-07-16 15:12:00
这是行不通的:文档说类型必须匹配实际的矩阵类型。 – amc 2010-07-16 15:17:31