title: Finding the convex hull of an object in opencv?
body: <p>I've written this based on the tutorial <a href="http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/hull/hull.html" rel="nofollow">here</a> but I'm unable to obtain the convex hull of the image (I'm using a similar hand image as shown in the tutorial). I get the source and edges output fine but the "Drawings" output which should draw the contour and convex hull lines don't show anything drawn and instead is completely black. Any ideas as to why this could be?</p>
  
  <pre><code>#include &lt;opencv/cv.h&gt;
  #include &lt;opencv/highgui.h&gt;
  #include &lt;opencv/cxcore.h&gt;
  
  int main(int argc,char **argv)
  {
      cvNamedWindow( "Source", 1 );
      cvNamedWindow( "edges window", 1 );
      cvNamedWindow( "Drawings", 1 );
  
      IplImage* src = cvLoadImage( "img.jpg", 0 );
      IplImage* edges = cvCreateImage( cvGetSize(src), 8, 1 );
  
      // Finding edges
      cvThreshold( src, edges, 150, 255, CV_THRESH_BINARY );
  
      CvMemStorage* storage = cvCreateMemStorage();
      CvSeq* first_contour = NULL;
  
      int Nc = cvFindContours(
          edges,
          storage,
          &amp;first_contour,
          sizeof(CvContour),
          CV_RETR_LIST );
  
      // Finding convex Hull
      CvMemStorage* hull_storage = cvCreateMemStorage();
      CvSeq* retHulls = NULL;
  
      for(CvSeq* i = first_contour; i != 0; i = i-&gt;h_next){
      // note h_next is next sequence.
      retHulls = cvConvexHull2(first_contour,hull_storage,CV_CLOCKWISE,1);
  
      }
  
      // drawing contours and hull
      IplImage* draw = cvCreateImage(cvGetSize(edges), 8, 3 );
  
      for(CvSeq* i = first_contour; i != 0; i = i-&gt;h_next){
          cvDrawContours(draw,first_contour,cvScalar(255,0,0,0),cvScalar(255,0,0,0),0,1,8);
          cvDrawContours(draw,retHulls,cvScalar(255,0,0,0),cvScalar(255,0,0,0),0,1,8);
  
      }
  
      cvShowImage( "Source", src );
      cvShowImage( "edges window", edges );
      cvShowImage( "Drawings", draw );
      cvWaitKey();
  
      cvDestroyAllWindows();
  
      cvReleaseImage( &amp;src );
      cvReleaseImage( &amp;edges );
      cvReleaseImage( &amp;draw );
  
      return 0;
  }
  </code></pre>