2011-08-03 71 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」。