Насколько я могу судить, вы можете это сделать вид. Вы можете использовать класс шаблонов 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
Надеется, что будет достаточно, что вы можете использовать его для некоторых вещей, но это не будет столь же чистым, как обычно.
Это было полезно. Почему разрешено только несколько примитивных типов? Имеет ли он какое-то отношение к памяти? – garak