Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > OpenCV
OpenCV Vos questions sur l'API de traitement d'images OpenCV.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 20h23   #1
jmour
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : janvier 2012
Messages : 14
Points : 0
Points : 0
Par défaut Détection du centre de gravité

bonjour,
je debute avec opencv
je doit realise un programme qui detecte le centre de gravite d'un objet et puis il affiche une cercle au coordonne de ce point
je deja tape quelque ligne de code mais je pas reussie a affiche le cercle
help me please

l'image sur la quelle je test mon code::

http://static.mensup.fr/article/gran...e-lego-mp3.jpg



le code ::

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv/cxcore.h>
using namespace std;
using namespace cv;
int main()
{
int x,y;
//int h=0,v=0,s=0;
int sommeX = 0, sommeY = 0;
int nbPixels=0;
CvPoint objectPos = cvPoint(-1, -1);
 
 IplImage* img;
  IplImage* t;
    IplImage* imghsv;
    // lire est affiche l'image
    img=cvLoadImage("D:/lego.jpg",1);
    cvNamedWindow( "tst", CV_WINDOW_AUTOSIZE );
    imshow("tst",img);
    waitKey(0);
 
    //cree une image de mm taille que l'image d'origine et conversion en hsv
    imghsv=cvCreateImage(cvGetSize(img),8,3);
    cvCvtColor(img,imghsv,CV_BGR2HSV);
    imshow("tstr",imghsv);
    waitKey(0);
 
    //binarisation de l'image et detection du 1er objet
    IplImage * imgT = cvCreateImage ( cvGetSize ( img ) , 8 , 1 ) ;
    cvInRangeS ( imghsv, cvScalar (93, 45, 65) , cvScalar (140, 250, 250) , imgT ) ; // T  S  L
    imshow("ttr",imgT);
    waitKey(0);
 
    //creation d'un mask pour les operation morphologique
    IplConvKernel *kernel= cvCreateStructuringElementEx(7, 7, 4, 4, CV_SHAPE_ELLIPSE);
    cvErode(imgT , imgT , kernel, 1);
    cvErode(imgT , imgT , kernel, 1);
    cvDilate(imgT , imgT , kernel, 1);
    imshow("ttr",imgT);
    waitKey(0);
 
    //calculer du barycentre
    for(x = 0; x < imgT->width; x++) {
    for(y = 0; y < imgT->height; y++) {
        if(((uchar *)(imgT->imageData + y*imgT->widthStep))[x] == 255) {
            sommeX += x;
            sommeY += y;
            (nbPixels)++;
        }
    }
}
cvPoint((int)(sommeX / (nbPixels)), (int)(sommeY / (nbPixels)));
 
if (nbPixels > 10)
        t=cvDrawCircle(img, objectPos, 15, CV_RGB(255, 0, 0), -1);
          imshow("y",t);
        waitKey(0);
   return 0;
}
erreur::

Citation:
C:\Users\xbox\Desktop\projetTest\main.cpp||In function 'int main()'
C:\Users\xbox\Desktop\projetTest\main.cpp|57|error: void value not ignored as it ought to be|
||=== Build finished: 1 errors, 0 warnings ===|
jmour est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 11h52   #2
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 167
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 167
Points : 12 638
Points : 12 638
Bonjour,

Le retour de la fonction cvDrawCircle() est de type void, tu ne peux donc pas assigner son retour dans IplImage* t.
Le cercle est directement dessiné dans l'image d'origine (premier paramètre img ici). Si tu souhaites obtenir le résultat dans t, il te faut au préalable copier le contenu d'img dans t, puis utiliser t dans cvDrawCircle().
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h25.


 
 
 
 
Partenaires

Hébergement Web