2012-08-05 68 views
2

我已经根据教程here编写了这个教程,但我无法获得图像的凸包(我使用的教程中显示了类似的手形图像)。我得到的源和边输出很好,但应该画轮廓和凸包线的“绘图”输出不显示任何绘制的东西,而是完全黑色的。任何想法为什么这可能是?在opencv中查找对象的凸包?

#include <opencv/cv.h> 
#include <opencv/highgui.h> 
#include <opencv/cxcore.h> 

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, 
     &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->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->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(&src); 
    cvReleaseImage(&edges); 
    cvReleaseImage(&draw); 

    return 0; 
} 

回答

3

你必须做到以下几点变化:从CV_RETR_LISTcvFindContours功能

  1. 更改参数CV_RETR_EXTERNAL
  2. 更改CV_THRESH_BINARYCV_THRESH_OTSUcvThreshold

这里的证明(输入/输出):

enter image description hereenter image description here

+0

您好,嗯改变它在我的代码没有影响?你把我的代码或你自己试试呢? - 谢谢 – silent 2012-08-06 07:48:10

+1

@silent看更新。 – ArtemStorozhuk 2012-08-06 18:05:18

+0

为图像提供工作,但它不适用于这样的事情的欢呼声? http://i.imgur.com/1nYN7.jpg有关为什么? – silent 2012-08-08 13:42:41