title: projecting image with opengl and Antialiasing
body: <p>In my work I overlap a part of a captured frame with an image. I open my webcam with openCV and then I transform the captured frame in a texture and display it in a GLUT window. Also, I overlap a part of this texture with this image:</p>
  
  <p><img src="https://i.stack.imgur.com/KMVr1.jpg" alt="enter image description here"></p>
  
  <p>I do this in real time, and the result is:</p>
  
  <p><img src="https://i.stack.imgur.com/1H2o8.jpg" alt="enter image description here"></p>
  
  <p>As you can see, edges of projected image are inaccurate. I think it is an aliasing problem, but I don't know how to do the antialiasing process with opengl. I've tried to look for on web, but I didn't find a good solution for my problem.</p>
  
  <p>In my "calculate" function I transform the mat image into a texture usign the following code:</p>
  
  <pre><code>GLvoid calculate(){
  ...
  ...
  cvtColor(image, image, CV_BGR2RGB);
      glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
      glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
      glBindTexture(GL_TEXTURE_2D, textures[1]);
      glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
      glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
      //glTexImage2D(GL_TEXTURE_2D, 0, 4,image.cols, image.rows, 0, GL_RGB,GL_UNSIGNED_BYTE, image.data);
      gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, image.cols, image.rows, GL_RGB, GL_UNSIGNED_BYTE, image.data);
  }
  </code></pre>
  
  <p>and I show the result using this code:</p>
  
  <pre><code>GLvoid Show(void) {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glEnable(GL_TEXTURE_2D);
  
      // Matrice di proiezione
      glMatrixMode (GL_PROJECTION);
      glLoadIdentity();
      gluOrtho2D(0, WIDTH, HEIGHT, 0); 
  
      // Matrice model view
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity(); 
  ...
  ...
  glBindTexture(GL_TEXTURE_2D, textures[1]);
          glBegin(GL_QUADS);
          glTexCoord2f(0.0f, 0.0f); glVertex2f((GLfloat)((coord[3].x)),(GLfloat)(coord[3].y));
          glTexCoord2f(1.0f, 0.0f); glVertex2f((GLfloat)((coord[0].x)),(GLfloat)(coord[0].y));
          glTexCoord2f(1.0f, 1.0f); glVertex2f((GLfloat)((coord[1].x)),(GLfloat)(coord[1].y));
          glTexCoord2f(0.0f, 1.0f); glVertex2f((GLfloat)((coord[2].x)),(GLfloat)(coord[2].y)); 
  
          glEnd();    
      }
      glFlush();
      glutSwapBuffers();
  
  }
  </code></pre>
  
  <p>In initialization function I write this:</p>
  
  <pre><code>GLvoid Init() {  
  
      glGenTextures(2, textures);
      glClearColor (0.0, 0.0, 0.0, 0.0);
  
      glEnable (GL_POLYGON_SMOOTH);
      glHint (GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE);
      glDisable(GL_DEPTH_TEST);
  
  }
  </code></pre>
  
  <p>but it doesn't work...</p>
  
  <p>I work on Win7 x64, with OPenGL 4.0 and Glut 3.7. My video card is an NVidia GeForce gt 630. also I enabled antialiasing from Nvidia control panel, but nothing is changed.
  does anyone know how to help me?</p>