gpt4 book ai didi

opencv - 如何将int *(bgr图像)从C++转换为unity3d纹理图像?

转载 作者:行者123 更新时间:2023-12-02 17:14:17 24 4
gpt4 key购买 nike

我有来自opencv c++的bgr图像uchar格式。

函数就像int * texture(int * data,int width,int height);该函数在c++端处理图像并返回指向数据的指针。如何在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;

}

最佳答案

我不确定您使用的是哪种格式的纹理,但是如果可以将其转换为byte [],则可以使用Texture2D.LoadImage(byte [])将其转换为工作纹理。

关于opencv - 如何将int *(bgr图像)从C++转换为unity3d纹理图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18297252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com