Je suis en train de faire un programme pour détecter des couleurs au large d'un cube Rubiks EmguCV couleur Reconnaissance
thats la capture d'écran de ce que j'ai et en cours d'exécution à ce jour, je essentiellement utilisé le code de l'exemple de détection bord qui est livré avec emguCV et utilisé pour détecter les petits cubes (mais comme vous pouvez voir certains des petits cubes ne sont pas détectés, mais ce n'est pas le problème que je veux discuter ici).
Maintenant, après avoir découvert où les petits cubes sont, je veux détecter quelle couleur ils sont, actuellement j'utilise les valeurs HSV pour décider de la couleur, comme ceci:
if (current_colour.Hue > 120 && current_colour.Hue < 170)
{
Colours[(int)colornames.W]++;
}
else if (current_colour.Hue > (170))
{
Colours[(int)colornames.R]++;
}
else if (current_colour.Hue > 5 && current_colour.Hue < 20)
{
Colours[(int)colornames.O]++;
}
else if (current_colour.Hue > 47 && current_colour.Hue< 60)
{
Colours[(int)colornames.G]++;
}
else if (current_colour.Hue > 15 && current_colour.Hue < 30)
{
Colours[(int)colornames.Y]++;
}
else if (current_colour.Hue > 100 && current_colour.Hue < 110)
{
Colours[(int)colornames.B]++;
}
où les valeurs chaque couleur que j'ai eu de tâtonnements à l'aide de photoshop ... Je suis sûr qu'il doit y avoir une meilleure façon d'obtenir des résultats qui sont mélangés (surtout avec le blanc et le rouge) Une aide?
Salut, utilisez-vous toutes les données dans le carré pour produire une couleur moyenne ou juste un pixel individuel GetAverage produira la valeur moyenne pour une ROI. Pour obtenir de meilleurs résultats, utilisez la saturation et la valeur. Vous pouvez également utiliser un autre type d'image tel que Bgr pour confirmer les résultats d'autant plus que le blanc sera (255,255,255) et le rouge (0,0255) dans un monde idéal. Puis-je aussi dire que ce que vous faites semble vraiment intéressant. J'espère que je peux aider – Chris
Hey Chris, j'utilisais un seul pixel, mais maintenant je pense à prendre la moyenne de plusieurs pixels (environ 9 ou 10) dans le carré (en écrivant ma propre fonction) est GetAverareage une fonction qui sera faites-le pour moi (je l'ai googlé mais je n'ai rien trouvé). – 7VoltCrayon
Salut, oui, tout ce qu'il fait est de prendre le retour sur investissement, ajouter chaque pixel et diviser par le nombre de pixels afin d'écrire votre propre fonction est tout aussi facile. Je m'attends à ce qu'un seul pixel produise votre erreur principale car le noir affectera la couleur si elle est proche du bord grâce à l'encodage de l'image et à la compression sans faire de bruit. Je suggère de prendre le centre des places et travailler à partir de là. Salutations – Chris