Lumière Laser de détection avec OpenCV et C++
Je souhaite suivre une lumière laser dot(qui est sur un mur) avec une webcam et je suis en utilisant openCV pour effectuer cette tâche. quelqu'un peut-il me suggérer un moyen de le faire avec le C++.
Merci !
Est-il possible d'utiliser une sorte de filtre en face de la webcam si oui, quelles sont ces filtres?
Le fait que la source de lumière est un laser réellement important pour vous, ou êtes-vous simplement à l'aide d'une parce que c'est un moyen pratique de faire un point lumineux? C'est, avez-vous quelque raison de s'occuper de la source est monochromatique et la phase appariés? Si oui, quelles sont les propriétés optiques de la surface de la dot est projeté sur (planéité, etc...)?
Pouvez vous suffit de scanner l'image pour la petite zone avec composante rouge ostensiblement intensification de la comparer à la région voisine?
Notez que cheep diodes lasers viennent dans une variété de couleurs maintenant. Donc
j'ai un mur et je l'ai prévu mon ordinateur à ce mur et je veux filtrer le point laser(quand je pointe un laser dot) à partir de la surface.
Le fait que la source de lumière est un laser réellement important pour vous, ou êtes-vous simplement à l'aide d'une parce que c'est un moyen pratique de faire un point lumineux? C'est, avez-vous quelque raison de s'occuper de la source est monochromatique et la phase appariés? Si oui, quelles sont les propriétés optiques de la surface de la dot est projeté sur (planéité, etc...)?
Pouvez vous suffit de scanner l'image pour la petite zone avec composante rouge ostensiblement intensification de la comparer à la région voisine?
Notez que cheep diodes lasers viennent dans une variété de couleurs maintenant. Donc
s/red/you laser's color/
.j'ai un mur et je l'ai prévu mon ordinateur à ce mur et je veux filtrer le point laser(quand je pointe un laser dot) à partir de la surface.
OriginalL'auteur Keshan | 2010-10-24
Vous devez vous connecter pour publier un commentaire.
Vous disposez de trois options en fonction de la stabilité de votre arrière-plan, et les choses que vous voulez faire avec l'image.
Vous pouvez faire de votre image si sombre que la seule chose que vous pouvez voir est le laser. Vous pouvez le faire par la fermeture du diaphragme et/ou de réduire le temps d'obturation. Même avec à bas prix webcams cela peut généralement être fait dans le pilote. Une fois que vous avez fait cela, la tâche de trouver le point du laser est très facile. Vous rendre l'image plus sombre possible parce que généralement le point où le laser brille est trop lumineux pour la caméra à ramasser. Cela signifie que vous avez de l'expérience) que vous ne pouvez pas discerner entre la lumière laser et autres objets de la lumière dans l'image. En le rendant plus sombre que vous pouvez faire cela.
Si vous avez d'autres utilisations pour votre image (le montrant aux gens) et votre arrière-plan est stable, vous pouvez également utiliser la moyenne de la dernière quelques images vidéo d'un "arrière-plan", puis de trouver l'endroit où il ya une grande différence entre le fond et la dernière image. Cela se produit généralement lorsque le laser est pointé (encore une fois, si votre fond est assez stable) .
Enfin, si votre fond n'est pas stable et vous ne voulez pas faire de votre image très sombre de votre dernière option est de chercher tous les pixels qui sont à la fois très lumineux et brillant dans le canal rouge que dans le vert et le bleu (si vous utilisez un laser rouge). Ce système sera toujours distrait par des taches blanches, mais pas autant que juste de trouver les pixels clairs. Si le centre de votre laser pointeur de la place est en effet de montrer le haut en blanc, indépendamment de laser de la couleur, puis cette technique vous permettra de trouver des "anneaux" autour de cette tache lumineuse (la partie extérieure du point où le laser n'est pas aussi clair qu'il est dans le centre de sorte qu'il présente avec la couleur réelle du laser dans l'image). Vous pouvez ensuite utiliser simple les opérations morphologiques, (probablement fermeture est assez) pour remplir ces cercles.
OriginalL'auteur jilles de wit
Supposons que vous utilisez un laser de l'une de ces couleurs: rouge, vert, bleu.
Si le point laser apparaît très lumineux (au moins dans un canal, par exemple rouge) ensuite, il suffit de seuillage de l'image/du canal de, dire greyvalue de 200, vous laisse avec un peu de candidats pour la lumière laser. Si les autres canaux sont sombres(er) dans cette zone, vous savez que c'est une brillante lumière de la bonne couleur. Un peu de filtrage par taille, et vous avez une bonne chance de trouver une place.
OriginalL'auteur Adi Shavit
Si vous vous en tenez un filtre IR sur votre webcam, votre projection ne sera pas ramassé, ce qui rend la détection du point du laser beaucoup plus facile (à l'aide de simple soustraction du bruit de fond électronique.t.c) en supposant que le pointeur laser émet de la lumière INFRAROUGE...
OriginalL'auteur max
Comme suggéré dans d'autres réponses, à la recherche de la couleur pourrait être une bonne idée.
Vous devriez envisager de regarder pour une gamme de couleurs spécifique. La meilleure façon de le faire est de convertir l'image HSL ou l'espace de couleur HSV.
Plus d'informations sur Wikipédia.
Ensuite, vous avez trois canaux:
hue (=couleur), la saturation et la luminosité( ou la valeur).
Avec
cv::inRange(hsv, cv::Scalar(159, 135, 165), cv::Scalar(179, 255, 200), inRange);
vous pouvez maintenant générer une image en Noir et blanc, qui montre ce que les pixels sont dans la gamme de couleurs.Les scalaires sont les haut et bas de valeurs pour chaque canal.
Dans cet exemple, vous obtiendrez pixels avec une couleur entre 159 et 179 (hue), la saturation entre 135 et 255 et valeur comprise entre 165 et 200.
Peut-être que cela peut améliorer le suivi de votre colis.
OriginalL'auteur Grey
Comment à propos de ce code
https://www.youtube.com/watch?v=MKUWnz_obqQ
https://github.com/niitsuma/detect_laser_pointer
Dans ce code, observé HSV couleur est comparé à un régime enregistré de couleur à l'aide de Hotelling t carré d'essai
OriginalL'auteur niitsuma
essayer Modèle Maching.
d'abord vous avez "le point le pointeur à un endroit spécifique, de sorte que le temple peut être fait. Ensuite, vous avez juste chercher.
Ou, comme jilles de wit dit, vous pouvez prendre la différence des 2 dernières images, probablement la différence va vous montrer le pointeur.
Convertir les 2 dernières frames ne sont en échelle de gris, puis appliquez la SOUS-fonction.
OriginalL'auteur rafael i cuzziol