0

opencv c++ の bgr イメージ uchar 形式があります。

関数は int* texture(int* data, int width, int height); のようなものです。関数は c++ end で画像を処理し、データへのポインターを返します。Unity でこのデータをテクスチャに変換するにはどうすればよいですか。基本的に、このデータをテクスチャとして配置できるようにします。私はそれをファイルに書きたくありません。助けてください。

コード スニペット (私は dll を使用しています) :::

public static WebCamTexture webCamTexture;
 private Color32[] data;
 private int[] imageData;
 private int[] imdat;

void Start () {
....

data = new Color32[webCamTexture.width * webCamTexture.height];
        imageData = new int[data.Length * 3];
}


void Update()
    {

        webCamTexture.GetPixels32(data);

        // Convert the Color32[] in int* and emit it in bgr format 
        for (int i = 0; i < data.Length; ++i)
        {
            imageData[i * 3] = (int)data[i].b;
            imageData[i * 3 + 1] = (int)data[i].g;
            imageData[i * 3 + 2] = (int)data[i].r;
        }

       //this is the function called from dll
       imdat =  texture(imageData, int width, int height); 
}

そしてDLLの終わりは次のようになります::

char *tmp;

int* texture(int* imageData ,int width ,int height)
{
int n = w * h * 3;
    tmp = new char[n];

    //ImageData inverted here and then passed onto tmp 3 channels image
    for (int i = 0; i < (w*3); ++i)
            for (int j = 0; j < h; ++j)
                tmp[i + j * (w*3)] = (char)imageData[i + (h - j - 1) * (w*3)];

return (int)tmp;

}
4

2 に答える 2

1

あなたが持っているテクスチャの形式はわかりませんが、それを byte[] に変換できる場合は、Texture2D.LoadImage(byte[]) を使用して作業用テクスチャに変換できます。

于 2013-08-18T11:54:20.173 に答える