0

Dear community recently I've been studying a little bit of Opencv and I found interesting the eye tracking stuff, so i found a source code for getting started, but when i tried to compile it I got this warning:

ojos2.cpp:15:5: warning: first argument of ‘int main(int*, char**)’ should be ‘int’ [-Wmain]

well to be more clear I'm compiling from the Ubuntu terminal, and here is the code

#include "cv.h"

#include"highgui.h"

IplImage* GetThresholdedImage(IplImage* img)
{

IplImage *imgHSV=cvCreateImage(cvGetSize(img),8,3);
cvCvtColor(img,imgHSV,CV_BGR2HSV);
IplImage *imgThresh=cvCreateImage(cvGetSize(img),8,1);
cvInRangeS(imgHSV,cvScalar(0, 84, 0, 0),cvScalar(179, 256, 11, 0),imgThresh);
cvReleaseImage(&imgHSV);
return imgThresh;
}

int main(int *argv,char **argc)
{

IplImage *imgScribble= NULL;
char c=0;
CvCapture *capture;
capture=cvCreateFileCapture("main.avi");

if(!capture)
{
    printf("Camera could not be initialized");
    exit(0);
}
cvNamedWindow("Simple");
cvNamedWindow("Thresholded");

while(c!=32)
{
    IplImage *img=0;
    img=cvQueryFrame(capture);
    if(!img)
        break;
    if(imgScribble==NULL)
        imgScribble=cvCreateImage(cvGetSize(img),8,3);

    IplImage *timg=GetThresholdedImage(img);
    CvMoments *moments=(CvMoments*)malloc(sizeof(CvMoments));
    cvMoments(timg,moments,1);

    double moment10 = cvGetSpatialMoment(moments, 1, 0);
    double moment01 = cvGetSpatialMoment(moments, 0, 1);
    double area = cvGetCentralMoment(moments, 0, 0);

    static int posX = 0;
    static int posY = 0;

    int lastX = posX;
    int lastY = posY;

    posX = moment10/area;
    posY = moment01/area;
     // Print it out for debugging purposes
    printf("position (%d,%d)\n", posX, posY);
    // We want to draw a line only if its a valid position
    if(lastX>0 && lastY>0 && posX>0 && posY>0)
    {
        // Draw a yellow line from the previous point to the current point
        cvLine(imgScribble, cvPoint(posX, posY), cvPoint(lastX, lastY), cvScalar(0,255,255), 5);
    }
    // Add the scribbling image and the frame...

    cvAdd(img, imgScribble, img);

    cvShowImage("Simple",img);
    cvShowImage("Thresholded",timg);
    c=cvWaitKey(3);
    cvReleaseImage(&timg);
    delete moments;

}
//cvReleaseImage(&img);
cvDestroyWindow("Simple");
cvDestroyWindow("Thresholded");
}

Any help will be useful

Thanks in advance

1
  • 1
    Read the warning message again, it's saying exactly what's wrong. Commented Nov 5, 2012 at 1:22

2 Answers 2

2

The prototype should be int main (int argv, char *argc[]), it is the pointer to argv that is primarily wrong -- char **argc and char *argc[] are two ways of saying the same thing, but it is more clear to write it as a pointer to a character array rather than as a pointer to a pointer.

Sign up to request clarification or add additional context in comments.

Comments

2

int main(int argv,char **argc) Warning is gone.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.