Bonjour,
Mon problème est que la librairie utilisé me renvoie un format d'image YUYV sur ma webcam. Des fonctions sont mises à disposition dans le code de celle-ci. Le rendu de l'image après conversion en RGB puis passage sous JAVA:

Voici les faits:
- j'ai une librairie "lti-civil" qui accède en C++ à la webcam et me transmet bien une image par appel et non un flux.
- voici un lien expliquant le format sur lequel je travail : http://v4l2spec.bytesex.org/spec/r4339.htm
- Voici le code permettant d'avoir un image malheureusement en vert :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
//Ceci est une fonction qui permet de remettre une valeur correspondante dans tous les cas au RGB.
//
// YUV to RGB conversion:
//
unsigned char clip(int value)
{    if (value <= 0)
        return 0;
    else if (value >= 255)
        return 255;
    else
        return (unsigned char) (value);
}
 
//Première méthode d'encodage je pense que le problème se situe ici
//
void yuv2rgb_buf(unsigned char *src, int width, int height, unsigned char *dst)
{
    int u_offset = width * height;
    int v_offset = u_offset + width * height / 4;    // TODO: handle rows not divisible by 2.
    int uv_width = width / 2;
    int i;
    for ( i = 0; i < ( width * height ); i++ )
    {
        int px = i % width;
        int py = i / width;
        int uv_x = px / 2; // x in u/v planes
        int uv_y = py / 2; // y in u/v planes
        unsigned char y, u, v;
        unsigned char r, g, b;
        y = src[i];
 
        u = src[u_offset + uv_width * uv_y + uv_x];
        v = src[v_offset + uv_width * uv_y + uv_x];
        yuv2rgb(y, u, v, &r, &g, &b);
 
        *dst++ = b;
        *dst++ = g;
        *dst++ = r;
    }
 
}
 
 
// Le coeur de l'encodage
//
/**
 * Converts a yuv into RGV, using only integer (no double).
 */
inline void yuv2rgb(unsigned char y, unsigned char u, unsigned char v, unsigned char *pr, unsigned char *pg, unsigned char *pb)
{
    int C = 298 * (y - 16);
    int D = u - 128;
    int E = v - 128;
    int r = ( C           + 409 * E + 128) >> 8;
    if (r < 0)
        r = 0;
    else if (r > 255)
        r = 255;
    int g = ( C - 100 * D - 208 * E + 128) >> 8;
    if (g < 0)
        g = 0;
    else if (g > 255)
        g = 255;
    int b = ( C + 516 * D           + 128) >> 8;
    if (b < 0)
        b = 0;
    else if (b > 255)
        b = 255;
    *pr = r;
    *pg = g;
    *pb = b;
}
On peut voir que la dernière fonction correspond à une des très nombreuses formules présentent sur ce site: http://www.fourcc.org/fccyvrgb.php

Après avoir modifié la deuxième fonction afin de correspondre aux autres formules j'obtiens soit un résultat rose, noir et blanc ou avec plus de moi à l'écran (cf image jointe on me voit 2 fois dessus)

Merci beaucoup de votre réponse et de votre aide.
HqSeO