J'ai vu toutes les questions sur la portée de la gamme d'espaces de couleur HSV pour la peau
Mais je ne peux comprendre que ce code
aide s'il vous plaît !!! strong> p> p>
9 Réponses :
Fondamentalement, il est difficile d'avoir une plage de couleurs fixe pour la peau, car même si vous souhaitez ne détecter que votre propre peau, sa couleur changera effectivement beaucoup en fonction des conditions d'éclairage. P>
Alors, peut-être que vous pouvez utiliser l'idée de ce bel article scientifique à partir de 2011: P>
http://www.robots.ox.ac.uk/ ~ VGG / Recherche / Mains / P>
Fondamentalement, ils détectent le visage (c'est facile avec OEPNCV). Ensuite, ils extraient la couleur de la peau du visage (qui est très spécifique aux personnes de l'image). Ensuite, ils détectent la peau en utilisant cette couleur. Étant donné que la couleur est très spécifique, elles devraient avoir beaucoup moins de fausse détection que ce que vous avez avec votre gamme de couleurs fixe. P>
Lisez simplement votre commentaire et aimé l'idée ... Coz que ce que j'essaie de faire ... Laissez-moi vérifier le lien que vous avez fourni ... Merci beaucoup pour la réponse ....
Le lien est mort, mais Ce semble être le même article.
Le détecteur de peau adaptatif existe sur OpenCV Voir Échantillons / C / AdaptiveKindetector_Sample.Cpp P>
Et si vous utilisez une légende vidéo, vous devez vous préoccuper que, dans la plupart des cas, les caméras font un contraste automatique, cet impact sur vos images, car vous allez avoir une différence significative des tonalités, vous devez également envisager de prendre en compte les ombres et les sources de lumière qui ont une incidence sur la peau p>
Je sais qu'il est trop tard pour répondre à cela. Mais je fais la même chose, et j'ai utilisé K signifie regroupement pour obtenir la couleur de la peau. C'est tout d'abord vous devez détecter le visage que je fais avec l'utilisation du classificateur Haar Cascade, puis basé sur les coordonnées de la face, vous pouvez recadrer la face, puis l'utiliser comme source pour regrouper la couleur. Découvrez le cluster qui a le plus d'éléments et qui sera votre couleur de peau. Ou sans spécifier une valeur particulière, vous pouvez obtenir le point central de cluster et vous pouvez l'utiliser comme une plage en déduisant et en ajoutant une valeur particulière. Ce sera utile http://answers.opencv.org/question/23196/k-mean-clustering-of-hsv-histogramme-fradame-of-a-video/ P>
J'ai essayé de
inférieur = np.array ([0, 10, 60], DTYPE = "UINT8")
Upper = np.array ([20, 150, 255], DTYPE = "UINT8")
code>
Cela donne presque bon résultat. P>
Essayez cette fonction de prétraitement dans votre code:
def preprocess(action_frame):
blur = cv2.GaussianBlur(action_frame, (3,3), 0)
hsv = cv2.cvtColor(blur, cv2.COLOR_RGB2HSV)
lower_color = np.array([108, 23, 82])
upper_color = np.array([179, 255, 255])
mask = cv2.inRange(hsv, lower_color, upper_color)
blur = cv2.medianBlur(mask, 5)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (8, 8))
hsv_d = cv2.dilate(blur, kernel)
return hsv_d
Comment avez-vous trouvé les limites inférieure et supérieure? Pouvez-vous regarder ma réponse ci-dessous et me dire ce que vous pensez des limites de DeepGaze?
Je me demande si vous utilisez des tapis ou iplimage Cause OpenCV obtient la couleur dans BGR non rgb, donc HSV devrait être hsv = cv2.cvtcolor (flou, cv_bgr2hsv).
Pourquoi la saturation et la valeur de 255? Ceux-ci détecteront également des couleurs très saturées. La peau n'est généralement pas rouge vif.
Cette solution ne fonctionnera pas pour des images orange rouge foncé ou orange clair
DeepGaze est une bibliothèque de détection de peau en plus des autres fonctionnalités.
Il utilise: P>
[0, 58, 50] lower bound skin HSV [30, 255, 255] upper bound skin HSV
La plupart des réponses ci-dessus fonctionnent pour une variété de couleurs de peau comme le rouge foncé, le jaune clair, la lumière orange, ... mais ces couleurs ne sont pas censées être des couleurs de la peau car elles sont à peine vues dans des images.
de
de
p>
code complet: p>
Qu'en est-il des Afro-Américains (si c'est même le bon terme, plus)? Ou des Amérindiens? Ou des Indiens? Ou des aborigènes australiens? Ou de petits hommes verts?
Je parle générale ... il devrait être pour la peau humaine ... s'il vous plaît donnez-moi des gammes différentes si c'est le cas ... Je pense que nous pouvons utiliser CVInranges pour plusieurs gammes ...
C'est là que réside votre problème. Puisque vous n'êtes intéressé que chez les humains (et je suppose que vous ne vous abonnez pas à une philosophie raciste bizarre consistant à considérer d'autres races sous-thumaines), nous ne pouvons compter que les petits hommes verts. Cela laisse toujours une gamme de couleurs massive i> pour répondre. Maintenant, je suppose que cela consiste à faire quelque chose avec des photos ou des vidéos (dire à la différence entre la peau et tout le reste), à moins que votre photo ne soit étiquetée en quelque sorte comme ne contenant que des caucasions ou des aborigènes ou de rien, les chances de pouvoir dire la différence entre l'homme et le non-humain est petit. Même avec des multi-gammes.
Maintenant, cela peut être fait i> être faisable s'il y a plus de contraintes ou que j'ai eu l'hypothèse de votre besoin réel de mal. Dans ce cas, faites-nous savoir.
@paxdiablo Je veux suivre la main ... essentiellement Ar de montres ... dans cet utilisateur gardera la main dans une image de la main et nous obtenons la distance du poignet des figures. Ce que nous pouvons faire plus, c'est que l'utilisateur clique sur une position spécifique et obtenez des valeurs HSV ... Aidez-moi s'il vous plaît ....
Aidez-moi s'il vous plaît avec la gamme ....