9

MatOpenCVで変換する方法unsigned char*と、データが配列になるかどうかを教えてもらえますか? また、配列のポインタにするためにvector<vector<double>>toに対して同じことを行うにはどうすればよいか知りたいですか?float*ありがとう。

4

1 に答える 1

8

すでに述べたように、次のdataメンバーを使用する必要がありcv::Matます。

cv::Mat m;
...
uchar *data = m.data;

2 番目の質問について: まず、 から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;
    }
}
于 2012-12-19T08:13:14.697 に答える