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
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 .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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void onPreviewFrame(byte[] data, Camera camera) { // TODO Auto-generated method stub MyText.setText(String.valueOf(data[1])); }en iplimage il sont entre 0 et 255 tout dépend du nombre de bit que déclare
Bonjour,
Le format retourné n'est pas du RGB , mais bien du YUV.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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; } } }
Partager