Forum Clubic

[c++]diviser webcam en zone

Bonjour tout le monde

J’aimerais trouver un site ou que quelqu’un m’explique
comment on fait pour diviser ce que vois ma webcam en plusieur zone.

En fait, j’aimerais pouvoir detecter les mouvements mais que dans certaine zone de ma webcam.

Si quelqu’un si connait

merci beaucoup.

il faut d’abord que tu fasses des recherches sur la détection de mouvement (google est ton ami)
mais avant de trouver des algos libres, tu passeras du temps vu que la plupart de ces algos sont fais par des chercheurs.

En gros entre deux images, il faut détecter les blocs qui changent d’état et qui se déplace dans l’image.

Donc pour faire ce je souhaite

des que mon programme detecte le mouvement je capture l’image et je regarde dans qu’elle zone le mouvement se trouve.

Je peut pas d’abord découper ma webcam en plusieur zone, et regarder ce qui se passe dans chaque zone?

tu peux

je dirai meme que tu commence par capturer une suite d’image que tu vas ensuite traiter.

Il suffit de faire des soustractions d’images pour avoir des vecteurs de mouvement

Attention avec l’acquisition d’une image de mauvaise qualité ca peut devenir compliquer etc …

Des soustraction d’image???
Comment on fait sa?

merci bcp si tu pouvait me l’expliquer.

Ton image numérique est échantillonée, c’est ce qu’on appelle des pixels. La valeur de ces pixels dépendent du codage que tu joins à ton échantillonnage (Niveau de gris sur 8 bits tu as tableau comprenant des valeur de 0 à255) (En couleur tu as plusieurs tableaux Y luminance Cr et Cb Chrominance codée sur X bits) . Tu as donc un tableau de valeurs correspondant à ton image (pour faire simple) . Entre 2 images tu as donc 2 tableaux tu peux donc soustraire les pixels ayant les mêmes coordonnées en valeur absolue(si ta caméréra est fixe) tu auras donc un résultat qui aura pour valeur un chiffre entre 0 et 255, (tu peux mettre un seuil si tu as des images de mauvaises qualité).
A partir de là tu peux essayer de calculer un vecteur de mouvement c’est à dire essayer de trouver le pixel ou l’amas de pixel qui a bougé! en faisant de l’identification (faire des supositions que le mouvement n’a pas pu se d"placer de tant de pixel etc…
CF Cours de traitement d’image pour plus de détail !

Tu es étudiant en quoi??? Tu cherches à faire quoi exactement ? de la programmation ou ???

Oui je suis étudiant. Et ce que je cherche a faire c’est pour mon projet. Je doit crée une petite application en C++ pour detecter les mouvements dans une zone et je cherche une méthode simple et rapide pour le faire.

Merci beaucoup

quel est ton point de départ? as tu la partie acquisition des images codées?? tu n’as rien??

pour l’instant j’ai fait une detection de mouvement et des qu’il detecte un mouvement enregistre une video.

Mais je voulais savoir comment faire pour juste detecter un mouvement dans une zone.

Dans ce cas là, il faut nous aider en précisant le mode de fonctionnement de ta fonction "détection de mouvement" actuelle!

En effet, si tu utilises déjà une telle fonction, ton problème se résume uniquement au bridage de cette dernière!

Comme l’a indiqué Tableur, si tu travailles sur une différence de tableau entre une image n et une image n+1, il te suffit alors de ne travailler que sur une partie de ces tableaux, ta zone de travaille.

Par exemple:
Si ton tableau n°1 ressemble à ça (je t’explique le principe en binaire, avec un tableau de 10x10 pixels):


1110000000
1110000000
1110000000
0000000000
0000000000
0000111000
0000111000
0000111000
0000011000
0000001000

Si ton tableau n°1 à ça:


0000000000
0111000001
0111000001
0111000001
0000000001
0000111000
0000111000
0000111000
0000011000
0000001000

Alors la comparaison de ces deux tableaux t’indique:


xxx
x  x     x
x  x     x
  xxx     x
          x
 
 
 
 
 

(les ‘x’ représentent un changement d’état de tes pixels)

On en déduit les points suivants:

  1. Un élément en haut à gauche s’est déplacée
  2. Un élément sur la droite de l’image s’est déplacé
  3. L’élément en bas de l’image au centre n’a pas bougé.

Admettons que l’élément en bas au centre de l’image soit une chaise placée dans le champ de ta caméra, au premier plan. Cela signifie qu’en gros, on verra toujours cette chaise, et que quoi qu’il se passe derrière, on ne le verra jamais… Donc, pour gagner en temps de traitement, autant supprimer cette zonne de nos calculs de détection

Il suffit alors de travailler sur des sous-tableaux de taille 5x5 par exemple, ou, par rapport à notre histoire de chaise, sur la partie supérieure de l’image (tableau de 10x5) etc…