2012-02-12 3 views
0

ли CV_64F самый большой измерение/размер одной единицы данных, которые могут храниться в матрице (сорта :: Мат или CvMat *) с помощью OpenCV? Есть ли что-то большее?Большие данные в резюме :: Мат или CvMat *

Я хочу хранить данные большого размера, такие как длинный двойной в cv :: Mat. Есть ли способ сделать это без использования массивов?

ответ

2

Насколько я могу судить, вы можете это сделать вид. Вы можете использовать класс шаблонов Mat_. Ниже приведен краткий пример, который я написал:

#include <opencv2/core/core.hpp>  
#include <iostream> 

using namespace std; 
using namespace cv; 


int main(int argc, char* argv[]) 
{ 
    Mat_<long double> testing(Size(5, 5)); 

    // initialize matrix to ones 
    for(int i = 0; i < testing.rows; i++) 
    { 
     for(int j = 0; j < testing.cols; j++) 
     { 
      testing.at<long double>(i, j) = 1; 
     } 
    } 

    cout << "Element size in bytes is " << testing.elemSize() << "." << endl; 

    return 0; 
} 

Теперь предостережением ... Если вы пытаетесь использовать многие из вспомогательных методов, ones, zeros, operator<< и другие), то, скорее всего, эта ошибка:

OpenCV Error: Unsupported format or combination of formats() in scalarToRawData 

Надеется, что будет достаточно, что вы можете использовать его для некоторых вещей, но это не будет столь же чистым, как обычно.

+0

Это было полезно. Почему разрешено только несколько примитивных типов? Имеет ли он какое-то отношение к памяти? – garak

Смежные вопросы