2017-10-17 10 views
1

Unityワークで少し問題があり、Webcamテクスチャから画像を取得しようとしていますが、これをバイト[]で保持します。問題は、正しく表示されていない画像を表示したときに発生します。グリッドメッシュのようなものです。私は問題は、私がピクセルを渡すために使用していると思う。あなたが私を助けることを願っています。 enter image description herewebcamtextureの画像に問題があります

void Update() 
{ 

    //texto.text = texto.text + width +"/"+ height + "/" + ini.ToString()+ " mal: "+ testo().ToString()+ " SizeIMG: "+ imgData.Length + " NUEVO: "+ nuevo +"\n"; 

    imgData = null; 
    imgData = new byte[width * height * 3]; 
    resultado = null; 
    resultado = new byte[width * height * 3]; 

    color = webcam.GetPixels32(); 
    for (int i = 0; i < color.Length; i += 3) 
    { 
     imgData[(i * 3)] = color[i].r; 
     imgData[(i * 3) + 1] = color[i].g; 
     imgData[(i * 3) + 2] = color[i].b; 

    } 
    color = null; 

    //video(imgData, resultado); 

    //ProcessFrame(imgData, resultado, 0, 0, 0,0, nuevo); 
    nuevo = false; 

    textura2 = new Texture2D(width, height, TextureFormat.RGB24, false); 
    textura2.LoadRawTextureData(imgData); 
    textura2.Apply(); 

    //Left IMAGE 
    renderer.material.mainTexture = textura2; 
    textura2 = null; 

    RightImage.GetComponent<Renderer>().material.mainTexture = webcam; 

    if (kont == 30) 
    { 
     texto.text = ""; 
     kont = 0; 
    } 
    kont++; 

    Resources.UnloadUnusedAssets(); 
} 
+0

イメージは1ピクセルあたり3ビットで、4ピクセルではありませんか? –

+0

私はそれが3bits、RGBフォーマットだと思いますが、わかりません。 –

+0

btw、画像のサイズとcolor.lengthの値は何ですか? –

答えて

1

私はあなたのimgData配列へのインデックス方法は問題だと思います。

int bytesPerPixel = 3; 
const int indexR = 0; 
const int indexG = 1; 
const int indexB = 2; 
for(var i = 0; i < color.Length; i++) 
{ 
    imgData[(i * bytesPerPixel) + indexR] = color[i].r; 
    imgData[(i * bytesPerPixel) + indexG] = color[i].g; 
    imgData[(i * bytesPerPixel) + indexB] = color[i].b; 
} 
+0

ooooooooそれは動作し、今私は失敗を参照してください。私は3で3を追加しました。ありがとう –

+0

@UrkoSanchezOrtiz問題はありません!問題を解決した場合は、upv​​oteして受け入れられたとマークしてください –

関連する問題