如何将Mat转换为Int? (c ++,Gpu,OpenCV)

时间:2017-08-22 16:21:43

标签: c++ arrays opencv gpu

我正在尝试将数学转换为int但它不起作用。我在互联网上搜索了有关转换的信息,但没有为我找到任何东西。

  1. 我们如何将array转换为mat

  2. 我们如何将mat转换为array

  3. 我应该使用哪种方式?

2 个答案:

答案 0 :(得分:1)

假设您的mat类确实是cv::Mat(因为您指定在主题中使用OpenCV),您可以查看所有cv::Mat函数和构造函数{ {3}}。在那里,您可以看到有here可以向其传递指向数据的指针。一个例子是:

int array1[] = {1,2,3,4,5,6,7,8,9,10,11,12};
cv::Mat mat = cv::Mat(2,6,CV_32SC1,array1);

将席子中的数据作为数组检索(以前的代码)

int* array2;
if (mat.sContinuous())
    array2 = mat.ptr<int>(0);

如果矩阵不连续,那么您很可能必须逐个元素地复制它。

答案 1 :(得分:0)

尝试使用 cv:FileStorage

 FileStorage fS("test.xml", FileStorage::WRITE);
 Mat m1 = Mat(1,1, CV_64F, mydata);  // suppose that m1 is the mat object that you want to save its values.
 fS << m1;
 fs.release();

稍后您可以使用READ方法打开相同的.xml文件,只需将值读入数组。