Opencv 为什么等高线面积只返回0?

Opencv 为什么等高线面积只返回0?,opencv,Opencv,我正在尝试查找轮廓区域,但轮廓区域仅返回0 不管轮廓是什么。 没有显示错误 void CMFC_DEMODlg::OnBnClickedRun() { CString str; IplImage* src1 = cvLoadImage("onlyone001.JPG",1); IplImage* src2 = cvLoadImage("b004.JPG",1); IplImage* grey = cvCreateImage( cvGetSize

我正在尝试查找轮廓区域,但轮廓区域仅返回
0
不管轮廓是什么。 没有显示错误

void CMFC_DEMODlg::OnBnClickedRun()
{
    CString str;

    IplImage* src1    = cvLoadImage("onlyone001.JPG",1);
    IplImage* src2    = cvLoadImage("b004.JPG",1);
    IplImage* grey    = cvCreateImage( cvGetSize(src2), 8, 1 );
    IplImage* dst    = cvCreateImage( cvGetSize(src2), 8, 3 );
    IplImage* F        = cvCreateImage( cvGetSize(src2), 8, 1 );
    IplImage* W        = cvCreateImage( cvGetSize(src2), 8, 1 );

    cvCvtColor( src2, grey, CV_BGR2GRAY);
    cvThreshold( grey, W,200,255,CV_THRESH_BINARY);

    CvSeq* c;
    CvSeq* contour;
    CvSeq* result;

    CvMemStorage* storage = cvCreateMemStorage(0);

    int Nc = cvFindContours(
    W,
    storage,
    &contour,
    sizeof(CvContour),
    CV_RETR_LIST,
    CV_CHAIN_APPROX_SIMPLE,
    cvPoint(0,0));

    double Area;

    result = cvApproxPoly(contour, sizeof(CvContour), storage,
        CV_POLY_APPROX_DP, cvContourPerimeter(contour)*0.02, 0);

    Area = fabs(cvContourArea(result, CV_WHOLE_SEQ));

    str.Format("Area: %d\n", Area);
    GetDlgItem(IDC_STATIC02)->SetWindowText(str);

    str.Format("Nc: %d\n", Nc);
    GetDlgItem(IDC_STATIC01)->SetWindowText(str);


    m_CvvImage.CopyOf(src2,1);
    m_CvvImage.DrawToHDC(Disp_hDC1,Disp_Rect);

    m_CvvImage.CopyOf(src1,1);
    m_CvvImage.DrawToHDC(Disp_hDC2,Disp_Rect);

    m_CvvImage.CopyOf(W,1);
    m_CvvImage.DrawToHDC(Disp_hDC3,Disp_Rect);
}

我只想计算图像中每个轮廓的面积。我做错了什么?

点应该按时钟顺序放置在向量中。 以正方形为例:

corners2.push_back(Point(0,0));
corners2.push_back(Point(src.rows-1,0));
corners2.push_back(Point(src.rows-1,src.cols-1));
corners2.push_back(Point(1,src.cols-1));

显示绘制了轮廓的图片可能很有用-例如,对于具有自相交的轮廓,轮廓面积无法正确计算。cvContourArea返回一个双精度值。谢谢,先生。问题解决方案但我有另一个问题,如果照片中不只有一个轮廓,如何找到我想要的轮廓区域?这个问题与