在Unity上使用EmguCV的Texture2D.LoadImage()

时间:2014-03-21 14:23:46

标签: c# unity3d camera emgucv texture2d

我正在使用EmguCV的Capture类,使用LoadImage函数将相机上的图像放在Texture2D上。在尝试这样做之前,我使用的是SetPixel函数,但速度太慢了。

当我执行下面的代码时,会出现白色背景上的红色问号而不是相机的图像。

我在这里做错了什么?

public class testEmguCV : MonoBehaviour
{
    private Capture capture;

    void Start() 
    {
        capture = new Capture();
    }

    void Update()
    {
        Image<Gray, Byte> currentFrame = capture.QueryGrayFrame();
        Texture2D camera = new Texture2D(400, 400);
        if (currentFrame != null)
        {
            camera.LoadImage(currentFrame.Bytes);
            renderer.material.mainTexture = camera;
        }
     }
}

1 个答案:

答案 0 :(得分:2)

以下是我为纠正问题所做的修改:

public class testEmguCV : MonoBehaviour
{
    private Capture capture;

    void Start() 
    {
        capture = new Capture();
    }

    void Update()
    {
        Image<Gray, Byte> currentFrame = capture.QueryGrayFrame();
        Bitmap bitmapCurrentFrame = currentFrame.ToBitmap();
        MemoryStream m = new MemoryStream();
        bitmapCurrentFrame.Save(m, bitmapCurrentFrame.RawFormat);

        Texture2D camera = new Texture2D(400, 400);
        if (currentFrame != null)
        {
            camera.LoadImage(m.ToArray());
            renderer.material.mainTexture = camera;
        }
     }
}