Tobias

February 21, 2009, 13:41:08

Hello I have a Problem with extracting the RGB-Values in 2D-Arrays. I have 3 Arrays R[480][640], G[480][640] and B[480][640].

Now I get the Pointer of my Image-Buffer and want to save the R-,G-,B-Value in my Arrays for each Pixel.

I wrote something like this:

for (int i = 0; i< MAX_ROW; i++)

{

for (int j = 0; j< MAX_COLUMN; j++)

{

B[i][j] = bTmpArray[j+i*MAX_COLUMN*3];

G[i][j] = bTmpArray[j+i*MAX_COLUMN*3+1];

R[i][j] = bTmpArray[j+i*MAX_COLUMN*3+2];

}

}

The Result of my Function is not as expected, so I saved the Image and did the same function with another Demo-Application, which uses Bitmap-Functions to fill the arrays and there ist works.

The second problem is, when I want to show my buffer in the application, I copy back the values of my arrays in an Image-Buffer Array, it looks like:

for (int i = 0; i< MAX_ROW; i++)

{

for (int j = 0; j< MAX_COLUMN; j++)

{

bTmpArray[j+i*MAX_COLUMN*3] = 0/*0 for test, normaly B[i][j]*/;

bTmpArray[j+i*MAX_COLUMN*3+1] = 0 /*0 for test, normaly G[i][j]*/;

bTmpArray[j+i*MAX_COLUMN*3+2] = 0 /*0 for test, normaly R[i][j]*/;

}

}

The result is, that only 1/3 of picture is black, the other 2/3 the original Image is shown.

Does anybody what I´m doing wrong?

Thank you

Now I get the Pointer of my Image-Buffer and want to save the R-,G-,B-Value in my Arrays for each Pixel.

I wrote something like this:

for (int i = 0; i< MAX_ROW; i++)

{

for (int j = 0; j< MAX_COLUMN; j++)

{

B[i][j] = bTmpArray[j+i*MAX_COLUMN*3];

G[i][j] = bTmpArray[j+i*MAX_COLUMN*3+1];

R[i][j] = bTmpArray[j+i*MAX_COLUMN*3+2];

}

}

The Result of my Function is not as expected, so I saved the Image and did the same function with another Demo-Application, which uses Bitmap-Functions to fill the arrays and there ist works.

The second problem is, when I want to show my buffer in the application, I copy back the values of my arrays in an Image-Buffer Array, it looks like:

for (int i = 0; i< MAX_ROW; i++)

{

for (int j = 0; j< MAX_COLUMN; j++)

{

bTmpArray[j+i*MAX_COLUMN*3] = 0/*0 for test, normaly B[i][j]*/;

bTmpArray[j+i*MAX_COLUMN*3+1] = 0 /*0 for test, normaly G[i][j]*/;

bTmpArray[j+i*MAX_COLUMN*3+2] = 0 /*0 for test, normaly R[i][j]*/;

}

}

The result is, that only 1/3 of picture is black, the other 2/3 the original Image is shown.

Does anybody what I´m doing wrong?

Thank you