Opencv cvDrawContours not working

Opencv cvDrawContours not working

本文关键字:working not cvDrawContours Opencv      更新时间:2023-10-16

我尝试用CvPoint矢量绘制轮廓,同时使用cvDrawContours,它不会在图像上绘制轮廓,但cvDrawRect工作完美。请说明以下代码是否有错误

 IplImage *iplMaskKeyPoints = cvCreateImage(cvGetSize(iplObjGrey),iplObjGrey->depth,1);
 CvMemStorage *msObjImgStorage = cvCreateMemStorage(0);
 CvSeq* sqObjImgPoly = cvCreateSeq(CV_32SC2, sizeof(CvSeq), sizeof(CvPoint), msObjImgStorage );
 cvZero(iplMaskKeyPoints);
 for(int i = 0; i < (int)vecObjPoly.size(); i++ )
 {
    CvPoint pt = vecObjPoly[i];
    cvSeqPush(sqObjImgPoly, &pt );
 }
cvDrawContours(iplMaskKeyPoints,sqObjImgPoly,cvScalar(255,255,255),cvScalar(255,255,255),1,CV_FILLED);
cvShowImage("output",iplMaskKeyPoints);
cvWaitKey(0);
if(sqObjImgPoly != NULL)
        {
            cvClearSeq(sqObjImgPoly);
            sqObjImgPoly = NULL;
        }
        if(msObjImgStorage != NULL)
        {
            cvClearMemStorage(msObjImgStorage);
            cvReleaseMemStorage(&msObjImgStorage);
        }
vecObjPoly.clear();
cvReleaseImage(&iplMaskKeyPoints);

我已经运行了这段代码,但这里有3行cvCreateSeq第一个参数请添加这个标志CV_SEQ_KIND_CURVE来绘制轮廓

像这样替换第3行

CvSeq* sqObjImgPoly = cvCreateSeq( CV_32SC2 | CV_SEQ_KIND_CURVE, sizeof(CvSeq), sizeof(CvPoint), msObjImgStorage );