因此,我正在使用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