2016-07-06 16 views
1

私はOpenCVにいくつかのアルゴリズムを持っており、固定小数点値表現を使って書き直したいと思います。私はここで固定小数点演算のクラスを見つけました:https://github.com/eteran/cpp-utilities。私はMatの内容として固定クラスオブジェクト(または任意のカスタムクラス)でMat_テンプレートクラスを使用するエレガントな方法があるかどうかを知りたいと思います。私が使用している場合:私は、次のエラー取得していますカスタムクラスでOpenCV Mat_を使用する方法はありますか?

cv::Mat_<cv::Vec<Fixed<12, 4>, 3>> num; 

:それは、これまでのところ

template<size_t I, size_t F> class cv::DataType<Fixed<I, F>> 
{ 
public: 
    typedef Fixed<I, F> value_type; 
    typedef Fixed<I, F> work_type; 
    typedef Fixed<I, F> channel_type; 
    enum { 
     channels = 1, 
     depth = I + F, 
     type = CV_MAKETYPE(depth, channels) 
    }; 
}; 

:それはコメントで述べたように

Error C2039 'value' : is not a member of 'cv::DataDepth<numeric::Fixed<0x0c,0x04>>' opencv_hog D:\libs\x64\opencv_2_4_13\build\include\opencv2\core\core.hpp 1134 
Error C2065 'value' : undeclared identifier opencv_hog D:\libs\x64\opencv_2_4_13\build\include\opencv2\core\core.hpp 1134 
Error C2039 'fmt' : is not a member of 'cv::DataDepth<numeric::Fixed<0x0c,0x04>>' opencv_hog D:\libs\x64\opencv_2_4_13\build\include\opencv2\core\core.hpp 1135  
Error C2065 'fmt' : undeclared identifier opencv_hog D:\libs\x64\opencv_2_4_13\build\include\opencv2\core\core.hpp 1135  
Error C2056 illegal expression opencv_hog D:\libs\x64\opencv_2_4_13\build\include\opencv2\core\core.hpp 1135 
+2

あなたは、このマニュアルを見てみたいことがあります。 http://www.docs.opencv.org/ref/masterを/d0/d3a/classcv_1_1DataType.html#gsc.tab=0 私はあなたがそれを使用するためのテンプレートの専門化を定義するべきだと思います。 –

+0

ありがとうございました!私は私の質問に答えて、あなたが言ったこと、以下の結果をしようとしました。 – BartekM

答えて

0

を、私はテンプレートの特殊化を定義するために必要うまく動作するようです。例えば、私が書くことができます:

cv::Mat_<Fixed<13, 3>> fixed = cv::Mat_<Fixed<13, 3>>::zeros(10, 10); 
fixed(1, 1) = 2.4; 
std::cout << fixed(0, 0) << std::endl; 
std::cout << fixed(1, 1) << std::endl; 

そして、この意志出力:

0.0 
2.375 
関連する問題