2011-08-03 5 views
0

私はOpenCVを使って異なるディザリングテクニックをC++で作成しようとしています。 私の現在のコードは、Matが浮動小数点の場合にのみ機能します。この場合OpenCV Vecデータタイプ

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

画像が現在フロートである、それはCV_32FC3であるため、より具体的タイプ:私はこのような何かを持っている場合たとえば は言います。 私はこのような何かにそれを変更したい:

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

は、私がマットのためのデータ型に応じて変更することができる変数としてデータ型を表すためにとにかくありますか?

答えて

0

コンパイル時にコンパイラが知っておく必要があるテンプレートを使用しています。つまり、実行時にデータ型を変更することはできません(MS .NETとは異なります)。

テンプレートは「#define」と同等のC++と考えることができます。テンプレート化された関数は、使用される各データ型ごとに複製されて&に複製されます。

使用する個々のデータタイプは、遅かれ早かれ指定する必要があります。

Vec3fは実際には "Vec < float、3>"です。テンプレート化された関数に物を入れ、 "Vec <>"と "image.at"の両方に "float"の代わりにテンプレートシンボルを使用することができます。

関連する問題