opencv 错误

将点转化为轮廓cvSeq 失败

OpenCV Error: Bad argument (Unsupported sequence type) in cvContourArea


/**

  CvMemStorage*   memStorage = cvCreateMemStorage();
    //CvSeq*  blobContour = cvCreateSeq( CV_SEQ_KIND_GENERIC|CV_32SC2, sizeof(CvContour), sizeof(CvPoint), memStorage);
    CvSeq*  blobContour = cvCreateSeq(CV_SEQ_ELTYPE_POINT,sizeof(CvSeq), sizeof(CvPoint), memStorage);


    CvRect      r ;
    for(int point=0;point<pointNum-1;point++)
    {
        int size =blobContours[point].size();
        for(int i=0;i<size;i++)//是>=0
        {//将点集转化为轮廓
            cvSeqPush(blobContour,&blobContours[point][i]);
        }
        //test
        int test1 = (((1<<2-1)<<12));
        CvPoint* Array1;
        int Total1 = blobContour->total;
        Array1 = (CvPoint*)malloc(sizeof(CvPoint)*Total1);
        cvCvtSeqToArray(blobContour,Array1, CV_WHOLE_SEQ);
        CvPoint test;
        for (int i=0;i<Total1;i++)
        {
            test = Array1[i];
        }
        r = ((CvContour*)blobContour)->rect;

        //test
        float  area = cvContourArea(blobContour);
        //end test
        if(area>0)
        {//满度面积比
            //OK进行并行识别
            cvDrawContours(pImgContourShow, blobContour, CV_RGB(0, 255, 0), CV_RGB(0, 222, 0), 0, 1, 8, cvPoint(0, 0) );

        }
    }

*


源代码:



if( CV_IS_SEQ( array ))

{
contour = (CvSeq*)array;
if( !CV_IS_SEQ_POLYLINE( contour ))
CV_ERROR( CV_StsBadArg, "Unsupported sequence type" );

}


01540 #define CV_IS_SEQ_POLYLINE( seq )   \
01541     (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && CV_IS_SEQ_POINT_SET(seq)


01521 #define CV_SEQ_KIND( seq )     ((seq)->flags & CV_SEQ_KIND_MASK )



01473 #define CV_SEQ_KIND_BITS        2
01474 #define CV_SEQ_KIND_MASK        (((1 << CV_SEQ_KIND_BITS) - 1)<<CV_SEQ_ELTYPE_BITS)
  1<<2 -1 << 12     3 <<1100 = 1100000 = 2^6+2^5

01458 #define CV_SEQ_ELTYPE_BITS           12


01478 #define CV_SEQ_KIND_CURVE       (1 << CV_SEQ_ELTYPE_BITS)


01534 #define CV_IS_SEQ_POINT_SET( seq ) \
01535     ((CV_SEQ_ELTYPE(seq) == CV_32SC2 || CV_SEQ_ELTYPE(seq) == CV_32FC2))


 #define CV_SEQ_ELTYPE( seq )   ((seq)->flags & CV_SEQ_ELTYPE_MASK)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值