salut tout le monde,j'ai réussi à acceder au pixel d'une image sous android mais ..mais les valeurs des pixels qui me retourne sont très différent
est ce que quelqu'un a une idée merci
Version imprimable
salut tout le monde,j'ai réussi à acceder au pixel d'une image sous android mais ..mais les valeurs des pixels qui me retourne sont très différent
est ce que quelqu'un a une idée merci
Bonjour,
Merci de bien vouloir donner une exemple ou de préciser un peu plus votre problème .Citation:
j'ai réussi à acceder au pixel d'une image sous android mais ..mais les valeurs des pixels qui me retourne sont très différent
est ce que quelqu'un a une idée merci
of course, voila j'accède à la camera via onpreview ok
comme ça
et puis les valeur de mon data sont négative:cry:en iplimage il sont entre 0 et 255 tout dépend du nombre de bit que déclareCode:
1
2
3
4
5 public void onPreviewFrame(byte[] data, Camera camera) { // TODO Auto-generated method stub MyText.setText(String.valueOf(data[1])); }
Bonjour,
Le format retourné n'est pas du RGB , mais bien du YUV.Citation:
et puis les valeur de mon data sont négativeen iplimage il sont entre 0 et 255 tout dépend du nombre de bit que déclare
http://developer.android.com/referen...wCallback.html
Citation:
data the contents of the preview frame in the format defined by ImageFormat, which can be queried with getPreviewFormat(). If setPreviewFormat(int) is never called, the default will be the YCbCr_420_SP (NV21) format.
Tu trouveras une discussion sur le decodage de ce format
https://groups.google.com/group/andr...b29d3ddc8abf9b
et ici
http://code.google.com/p/android/issues/detail?id=823
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 // David Manpearl 081201 public static void decodeYUV(int[] out, byte[] fg, int width, int height) throws NullPointerException, IllegalArgumentException { final int sz = width * height; if(out == null) throw new NullPointerException("buffer 'out' is null"); if(out.length < sz) throw new IllegalArgumentException("buffer 'out' size " + out.length + " < minimum " + sz); if(fg == null) throw new NullPointerException("buffer 'fg' is null"); if(fg.length < sz) throw new IllegalArgumentException("buffer 'fg' size " + fg.length + " < minimum " + sz * 3/ 2); int i, j; int Y, Cr = 0, Cb = 0; for(j = 0; j < height; j++) { int pixPtr = j * width; final int jDiv2 = j >> 1; for(i = 0; i < width; i++) { Y = fg[pixPtr]; if(Y < 0) Y += 255; if((i & 0x1) != 1) { final int cOff = sz + jDiv2 * width + (i >> 1) * 2; Cb = fg[cOff]; if(Cb < 0) Cb += 127; else Cb -= 128; Cr = fg[cOff + 1]; if(Cr < 0) Cr += 127; else Cr -= 128; } int R = Y + Cr + (Cr >> 2) + (Cr >> 3) + (Cr >> 5); if(R < 0) R = 0; else if(R > 255) R = 255; int G = Y - (Cb >> 2) + (Cb >> 4) + (Cb >> 5) - (Cr >> 1) + (Cr >> 3) + (Cr >> 4) + (Cr >> 5); if(G < 0) G = 0; else if(G > 255) G = 255; int B = Y + Cb + (Cb >> 1) + (Cb >> 2) + (Cb >> 6); if(B < 0) B = 0; else if(B > 255) B = 255; out[pixPtr++] = 0xff000000 + (B << 16) + (G << 8) + R; } } }