J'essaie de détecter des objets blancs dans une vidéo. La première étape consiste à filtrer l'image afin qu'elle ne laisse que des pixels de couleur blanche. Ma première approche consistait à utiliser l'espace colorimétrique HSV puis à vérifier le niveau élevé du canal VAL. Voici le code:Quelle est la meilleure façon de détecter la couleur blanche?
//convert image to hsv
cvCvtColor(src, hsv, CV_BGR2HSV);
cvCvtPixToPlane(hsv, h_plane, s_plane, v_plane, 0);
for(int x=0;x<srcSize.width;x++){
for(int y=0;y<srcSize.height;y++){
uchar * hue=&((uchar*) (h_plane->imageData+h_plane->widthStep*y))[x];
uchar * sat=&((uchar*) (s_plane->imageData+s_plane->widthStep*y))[x];
uchar * val=&((uchar*) (v_plane->imageData+v_plane->widthStep*y))[x];
if((*val>170))
*hue=255;
else
*hue=0;
}
}
en laissant le résultat dans le canal de teinte. Malheureusement, cette approche est très sensible à l'éclairage. Je suis sûr qu'il y a un meilleur moyen. Aucune suggestion?
Je veux dire blanc = gris = pas de couleur, en fait j'essaie de détecter les verres en plastique blanc. Voici un exemple d'image: http://tinypic.com/r/14t1p1x/6 – dnul
Je ne suis pas sûr, vous dites que si je mets une lumière rouge sur le dessus alors la couleur des lunettes deviendrait en quelque sorte rougeâtre et au lieu de chercher des pixels blancs, je devrais chercher des pixels similaires, peu importe la couleur? – dnul
Si vous avez des objets blancs dans une scène et les allumer avec une lumière rouge, ils vont avoir l'air rouge! Dans ce cas, vous devrez trouver la couleur d'un objet «blanc» et rechercher cette couleur –