簡體   English   中英

有沒有一種方法可以將OpenCV Mat_與自定義類一起使用?

[英]Is there a way to use OpenCV Mat_ with custom class?

我在OpenCV中有一些算法,我想使用定點值表示法重寫它。 我在這里找到了定點算術類: https : //github.com/eteran/cpp-utilities 我想知道是否有一些優雅的方法可以將Mat_模板類與Fixed類對象(或任何自定義類)一起用作Mat的內容。 當我使用時:

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

我遇到以下錯誤:

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

正如評論中提到的,我需要定義模板專業化:

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)
    };
};

到目前為止,它似乎工作正常。 例如,我可以寫:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM