Mat to unsigned char*

Abh*_*kur 8 c++ opencv

任何人都可以告诉我如何在OpenCV中转换Matunsigned char*数据以及数据是否为数组?另外,我想知道如何能同样的事情可以做的vector<vector<double>>float*,从而使它数组的指针?谢谢.

Art*_*huk 6

如前所述,您应该使用以下data成员cv::Mat:

cv::Mat m;
...
uchar *data = m.data;
Run Code Online (Sandbox Code Playgroud)

关于你的第二个问题:首先,当你转换doublefloat你丢失一些数据.并且没有现成的解决方案,所以只需使用简单的循环和复制向量到数组指针:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)