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 : Sélectionner tout - Visualiser dans une fenêtre à part
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::

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 ===|