Bonjour,
Je réalise un projet où je dois détecter une couleur, et envoyer l'information à un automate qui activera des vannes en fonction de la position de la couleur détectée.
Explication en image ->
Je récupère donc le flux de ma caméra, je fais un traitement dessus afin d'obtenir une image binaire représentant en blanc la couleur détecté et en noir le reste de l'image. Ensuite je lui demande de comptabiliser le nombre de pixels blanc dans l'image. Seulement j'aimerai qu'il puisse "découper" l'image en 16 colonnes, et me donner le nombre de pixels pour chaque colonne de manière indépendantes. De la sorte je pourrai dire par exemple "sur les colonne 4, 5, 6, 7, 8, 9, 10, 11 et 12 j'ai au moins 4 pixels blanc donc j'active les vannes 4, 5, 6, 7, 8, 9, 10, 11 et 12 et les autres non"
à aujourd'hui, j'utilise cette partie de mon programme pour récupérer mes pixels
Je pensais pouvoir cibler ma recherche en changeant la valeur de x (et non pas y car je récupère sur toute la hauteur), par qlqe chose comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for(x = 0; x < mask->width; x++) // Calcul des pixels { for(y = 0; y < mask->height; y++) { if(((uchar *)(mask->imageData + y*mask->widthStep))[x] == 255) { sommeX += x; sommeY += y; (*nbPixels)++; } } }
for(x > 0 & x < 40; x < mask->width; x++)
pour obtenir les pixels compris dans l'intervalle 0 -> 40 et répater l' opération 16 fois jusqu'à x compris entre 600 et 640 mais ca ne fonctionne pas, alors je me retourne vers vous pour tenter d'avoir plus d'info
Merci
Partager