0

主題が言うように。私は unity3d で openCVSharp surf を実装しようとしていますが、iplimage から texture2d への変換部分でちょっと立ち往生しています。また、この変換プロセスは少なくとも 25 fps で実行する必要があることも考慮してください。したがって、ヒントや提案は非常に役立ちます。

4

3 に答える 3

1

少し遅れるかもしれませんが、私は現在同じことに取り組んでおり、ここに私の解決策があります:

void IplImageToTexture2D (IplImage displayImg)
{
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            float b = (float)displayImg[i, j].Val0;
            float g = (float)displayImg[i, j].Val1;
            float r = (float)displayImg[i, j].Val2;
            Color color = new Color(r / 255.0f, g / 255.0f, b / 255.0f);
            videoTexture.SetPixel(j, height - i - 1, color);
        }
    }
    videoTexture.Apply();
}

しかし、それは少し遅いです。引き続きパフォーマンスの向上に努めます。

于 2013-05-03T10:09:12.260 に答える
0

パフォーマンスを改善するには、Unity3d の文書化されていない関数 LoadRawTextureData を使用します。

Texture2D IplImageToTexture2D(IplImage img)
{
    Texture2D videoTexture = new Texture2D(imWidth, imHeight, TextureFormat.RGB24, false);
    byte[] data = new byte[imWidth * imHeight * 3];
    Marshal.Copy(img.ImageData, data, 0, imWidth * imHeight * 3);
    videoTexture.LoadRawTextureData(data);
    videoTexture.Apply();
    return videoTexture;
}
于 2015-01-06T10:07:50.153 に答える