有人能告诉我如何在OpenCV中将Mat
转换为unsigned char*
,并且数据是否会成为数组?此外,我想知道如何将vector<vector<double>>
转换为float*
,使其成为指向数组的指针?谢谢。
正如之前所提到的,您应该使用 cv::Mat
的 data
成员:
cv::Mat m;
...
uchar *data = m.data;
关于您的第二个问题:首先,当您从double
转换为float
时,会丢失一些数据。并且没有现成的解决方案可以解决这个问题,所以只需使用简单的循环将向量复制到数组指针中即可:
float* toArray(vector<vector<double> >& arr)
{
if (arr.empty())
{
return NULL;
}
else
{
//I assume that each vector (element of arr) has the same size
int m = arr.size();
int n = arr[0].size();
float *res = new float[m * n];
int count = 0;
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
res[count++] = (float) arr[i][j];
}
}
return res;
}
}