亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cvcontours.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
            if( method < 0 )            {                char _s = (char) s;                CV_WRITE_SEQ_ELEM( _s, writer );            }            else if( s != prev_s || method == 0 )            {                CV_WRITE_SEQ_ELEM( pt, writer );            }            if( s != prev_s )            {                /* update bounds */                if( pt.x < rect.x )                    rect.x = pt.x;                else if( pt.x > rect.width )                    rect.width = pt.x;                if( pt.y < rect.y )                    rect.y = pt.y;                else if( pt.y > rect.height )                    rect.height = pt.y;            }            prev_s = s;            pt.x += icvCodeDeltas[s].x;            pt.y += icvCodeDeltas[s].y;            if( i4 == i0 && i3 == i1 )  break;            i3 = i4;            s = (s + 4) & 7;        }                       /* end of border following loop */    }    rect.width -= rect.x - 1;    rect.height -= rect.y - 1;    cvEndWriteSeq( &writer );    if( _method != CV_CHAIN_CODE )        ((CvContour*)contour)->rect = rect;    assert( writer.seq->total == 0 && writer.seq->first == 0 ||            writer.seq->total > writer.seq->first->count ||            (writer.seq->first->prev == writer.seq->first &&             writer.seq->first->next == writer.seq->first) );    if( _rect )  *_rect = rect;    return CV_OK;}CvSeq *cvFindNextContour( CvContourScanner scanner ){    char *img0;    char *img;    int step;    int width, height;    int x, y;    int prev;    CvPoint lnbd;    CvSeq *contour = 0;    int nbd;    int mode;    CvStatus result = (CvStatus) 1;    CV_FUNCNAME( "cvFindNextContour" );    __BEGIN__;    if( !scanner )        CV_ERROR( CV_StsNullPtr, "" );    icvEndProcessContour( scanner );    /* initialize local state */    img0 = scanner->img0;    img = scanner->img;    step = scanner->img_step;    x = scanner->pt.x;    y = scanner->pt.y;    width = scanner->img_size.width;    height = scanner->img_size.height;    mode = scanner->mode;    lnbd = scanner->lnbd;    nbd = scanner->nbd;    prev = img[x - 1];    for( ; y < height; y++, img += step )    {        for( ; x < width; x++ )        {            int p = img[x];            if( p != prev )            {                _CvContourInfo *par_info = 0;                _CvContourInfo *l_cinfo = 0;                CvSeq *seq = 0;                int is_hole = 0;                CvPoint origin;                if( !(prev == 0 && p == 1) )    /* if not external contour */                {                    /* check hole */                    if( p != 0 || prev < 1 )                        goto resume_scan;                    if( prev & -2 )                    {                        lnbd.x = x - 1;                    }                    is_hole = 1;                }                if( mode == 0 && (is_hole || img0[lnbd.y * step + lnbd.x] > 0) )                    goto resume_scan;                origin.y = y;                origin.x = x - is_hole;                /* find contour parent */                if( mode <= 1 || (!is_hole && mode == 2) || lnbd.x <= 0 )                {                    par_info = &(scanner->frame_info);                }                else                {                    int lval = img0[lnbd.y * step + lnbd.x] & 0x7f;                    _CvContourInfo *cur = scanner->cinfo_table[lval - 2];                    assert( lval >= 2 );                    /* find the first bounding contour */                    while( cur )                    {                        if( (unsigned) (lnbd.x - cur->rect.x) < (unsigned) cur->rect.width &&                            (unsigned) (lnbd.y - cur->rect.y) < (unsigned) cur->rect.height )                        {                            if( par_info )                            {                                if( icvTraceContour( scanner->img0 +                                                     par_info->origin.y * step +                                                     par_info->origin.x, step, img + lnbd.x,                                                     par_info->is_hole ) > 0 )                                    break;                            }                            par_info = cur;                        }                        cur = cur->next;                    }                    assert( par_info != 0 );                    /* if current contour is a hole and previous contour is a hole or                       current contour is external and previous contour is external then                       the parent of the contour is the parent of the previous contour else                       the parent is the previous contour itself. */                    if( par_info->is_hole == is_hole )                    {                        par_info = par_info->parent;                        /* every contour must have a parent                           (at least, the frame of the image) */                        if( !par_info )                            par_info = &(scanner->frame_info);                    }                    /* hole flag of the parent must differ from the flag of the contour */                    assert( par_info->is_hole != is_hole );                    if( par_info->contour == 0 )        /* removed contour */                        goto resume_scan;                }                lnbd.x = x - is_hole;                cvSaveMemStoragePos( scanner->storage2, &(scanner->backup_pos) );                seq = cvCreateSeq( scanner->seq_type1, scanner->header_size1,                                   scanner->elem_size1, scanner->storage1 );                if( !seq )                {                    result = CV_OUTOFMEM_ERR;                    goto exit_func;                }                seq->flags |= is_hole ? CV_SEQ_FLAG_HOLE : 0;                /* initialize header */                if( mode <= 1 )                {                    l_cinfo = &(scanner->cinfo_temp);                    result = icvFetchContour( img + x - is_hole, step,                                              cvPoint( origin.x + scanner->offset.x,                                                       origin.y + scanner->offset.y),                                              seq, scanner->approx_method1 );                    if( result < 0 )                        goto exit_func;                }                else                {                    union { _CvContourInfo* ci; CvSetElem* se; } v;                    v.ci = l_cinfo;                    cvSetAdd( scanner->cinfo_set, 0, &v.se );                    l_cinfo = v.ci;                    result = icvFetchContourEx( img + x - is_hole, step,                                                cvPoint( origin.x + scanner->offset.x,                                                         origin.y + scanner->offset.y),                                                seq, scanner->approx_method1,                                                nbd, &(l_cinfo->rect) );                    if( result < 0 )                        goto exit_func;                    l_cinfo->rect.x -= scanner->offset.x;                    l_cinfo->rect.y -= scanner->offset.y;                    l_cinfo->next = scanner->cinfo_table[nbd - 2];                    scanner->cinfo_table[nbd - 2] = l_cinfo;                    /* change nbd */                    nbd = (nbd + 1) & 127;                    nbd += nbd == 0 ? 3 : 0;                }                l_cinfo->is_hole = is_hole;                l_cinfo->contour = seq;                l_cinfo->origin = origin;                l_cinfo->parent = par_info;                if( scanner->approx_method1 != scanner->approx_method2 )                {                    result = icvApproximateChainTC89( (CvChain *) seq,                                                      scanner->header_size2,                                                      scanner->storage2,                                                      &(l_cinfo->contour),                                                      scanner->approx_method2 );                    if( result < 0 )                        goto exit_func;                    cvClearMemStorage( scanner->storage1 );                }                l_cinfo->contour->v_prev = l_cinfo->parent->contour;                if( par_info->contour == 0 )                {                    l_cinfo->contour = 0;                    if( scanner->storage1 == scanner->storage2 )                    {                        cvRestoreMemStoragePos( scanner->storage1, &(scanner->backup_pos) );                    }                    else                    {                        cvClearMemStorage( scanner->storage1 );                    }                    p = img[x];                    goto resume_scan;                }                cvSaveMemStoragePos( scanner->storage2, &(scanner->backup_pos2) );                scanner->l_cinfo = l_cinfo;                scanner->pt.x = x + 1;                scanner->pt.y = y;                scanner->lnbd = lnbd;                scanner->img = (char *) img;                scanner->nbd = nbd;                contour = l_cinfo->contour;                result = CV_OK;                goto exit_func;              resume_scan:                prev = p;                /* update lnbd */                if( prev & -2 )                {                    lnbd.x = x;                }            }                   /* end of prev != p */        }                       /* end of loop on x */        lnbd.x = 0;        lnbd.y = y + 1;        x = 1;        prev = 0;    }                           /* end of loop on y */  exit_func:    if( result != 0 )        contour = 0;    if( result < 0 )        CV_ERROR_FROM_STATUS( result );    __END__;    return contour;}/*    The function add to tree the last retrieved/substituted contour,    releases temp_storage, restores state of dst_storage (if needed), and   returns pointer to root of the contour tree */CV_IMPL CvSeq *cvEndFindContours( CvContourScanner * _scanner ){    CvContourScanner scanner;    CvSeq *first = 0;    CV_FUNCNAME( "cvFindNextContour" );    __BEGIN__;    if( !_scanner )        CV_ERROR( CV_StsNullPtr, "" );    scanner = *_scanner;    if( scanner )    {        icvEndProcessContour( scanner );        if( scanner->storage1 != scanner->storage2 )            cvReleaseMemStorage( &(scanner->storage1) );        if( scanner->cinfo_storage )            cvReleaseMemStorage( &(scanner->cinfo_storage) );        first = scanner->frame.v_next;        cvFree( _scanner );    }    __END__;    return first;}#define ICV_SINGLE                  0#define ICV_CONNECTING_ABOVE        1#define ICV_CONNECTING_BELOW        -1#define ICV_IS_COMPONENT_POINT(val) ((val) != 0)#define CV_GET_WRITTEN_ELEM( writer ) ((writer).ptr - (writer).seq->elem_size)typedef  struct CvLinkedRunPoint{    struct CvLinkedRunPoint* link;    struct CvLinkedRunPoint* next;    CvPoint pt;}CvLinkedRunPoint;static inticvFindContoursInInterval( const CvArr* src,                           /*int minValue, int maxValue,*/                           CvMemStorage* storage,                           CvSeq** result,                           int contourHeaderSize ){    int count = 0;    CvMemStorage* storage00 = 0;    CvMemStorage* storage01 = 0;    CvSeq* first = 0;    CV_FUNCNAME( "icvFindContoursInInterval" );    __BEGIN__;    int i, j, k, n;    uchar*  src_data = 0;    int  img_step = 0;    CvSize  img_size;    int  connect_flag;    int  lower_total;    int  upper_total;    int  all_total;    CvSeq*  runs;    CvLinkedRunPoint  tmp;    CvLinkedRunPoint*  tmp_prev;    CvLinkedRunPoint*  upper_line = 0;    CvLinkedRunPoint*  lower_line = 0;    CvLinkedRunPoint*  last_elem;    CvLinkedRunPoint*  upper_run = 0;    CvLinkedRunPoint*  lower_run = 0;    CvLinkedRunPoint*  prev_point = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产午夜精品| 美女视频一区二区三区| 免费日本视频一区| 成人毛片视频在线观看| 91精品久久久久久蜜臀| 亚洲欧美日韩一区二区三区在线观看| 午夜私人影院久久久久| 成人av免费在线观看| 欧美精品一区在线观看| 日韩精品福利网| 欧洲精品一区二区| 亚洲欧洲国产日韩| 大胆欧美人体老妇| 国产欧美一区二区在线| 久久电影网站中文字幕| 69堂成人精品免费视频| 亚洲成av人片一区二区三区| 91偷拍与自偷拍精品| 国产精品视频在线看| 国产中文一区二区三区| 欧美电影免费观看高清完整版在线观看| 亚洲女同女同女同女同女同69| 国产a精品视频| 久久精品视频在线免费观看| 韩国精品主播一区二区在线观看| 日韩视频一区二区三区| 免费在线观看不卡| 欧美大片在线观看一区| 免费日韩伦理电影| 精品88久久久久88久久久| 精彩视频一区二区三区| 久久精品一二三| 国产高清在线观看免费不卡| 久久久久久久一区| 国产精品乡下勾搭老头1| 久久久777精品电影网影网| 蜜桃av一区二区| 久久先锋影音av鲁色资源| 国产在线看一区| 久久众筹精品私拍模特| 国产一区欧美二区| 国产午夜精品久久| av午夜精品一区二区三区| 亚洲天堂福利av| 欧美日韩五月天| 日本人妖一区二区| 国产三级一区二区| fc2成人免费人成在线观看播放 | 成人一级片网址| 欧美激情自拍偷拍| 91福利视频久久久久| 午夜精品一区二区三区免费视频 | www.av亚洲| 午夜精品在线看| 精品少妇一区二区三区免费观看| 夫妻av一区二区| 午夜一区二区三区在线观看| 欧美电视剧在线观看完整版| 不卡高清视频专区| 日韩中文欧美在线| 国产日韩欧美一区二区三区乱码| caoporn国产精品| 日本vs亚洲vs韩国一区三区二区 | 懂色av一区二区三区免费看| 亚洲视频免费看| 日韩欧美亚洲国产另类| 成人网页在线观看| 亚洲成人www| 国产日韩精品一区二区三区在线| 91久久国产最好的精华液| 免费不卡在线视频| 亚洲视频精选在线| 久久综合精品国产一区二区三区 | 精品88久久久久88久久久| caoporm超碰国产精品| 日韩成人av影视| 日韩毛片视频在线看| 欧美电视剧在线看免费| 色综合久久久久综合| 狠狠色狠狠色综合日日91app| 亚洲黄色免费网站| 中文字幕巨乱亚洲| 日韩欧美三级在线| 日本精品免费观看高清观看| 国产精品1区2区3区在线观看| 丝袜美腿成人在线| 一区二区在线电影| 国产精品久久国产精麻豆99网站| 91精品久久久久久久91蜜桃| 在线观看亚洲精品| 成人91在线观看| 国产在线视频一区二区| 蜜乳av一区二区| 香蕉久久夜色精品国产使用方法| 最新国产精品久久精品| 国产日韩欧美综合在线| www国产亚洲精品久久麻豆| 5月丁香婷婷综合| 欧美性感一区二区三区| 91影院在线免费观看| 成人亚洲一区二区一| 韩国女主播一区二区三区| 免费黄网站欧美| 日韩高清不卡一区二区| 香蕉乱码成人久久天堂爱免费| 亚洲欧美激情视频在线观看一区二区三区| 国产亚洲人成网站| 成人三级在线视频| 久久久久久久综合日本| 久久综合九色综合97婷婷女人| 777午夜精品视频在线播放| 欧美日韩久久一区| 欧美一区三区二区| 777精品伊人久久久久大香线蕉| 欧洲精品一区二区| 精品视频1区2区3区| 欧美午夜不卡在线观看免费| 欧美午夜宅男影院| 7777精品伊人久久久大香线蕉| 欧美日韩成人激情| 欧美一区二区三区在线看| 日韩欧美一区二区久久婷婷| 精品欧美一区二区三区精品久久| 欧美mv和日韩mv国产网站| 久久久一区二区三区| 国产精品美女一区二区在线观看| 国产精品久久久久久久午夜片 | 岛国精品在线播放| 色噜噜久久综合| 欧美日高清视频| 欧美岛国在线观看| 国产精品女主播av| 亚洲午夜久久久久久久久电影院| 日韩高清在线一区| 韩国成人在线视频| 99视频国产精品| 欧美日韩久久久| 久久亚洲精品小早川怜子| 中文字幕日韩精品一区 | 亚洲欧美偷拍三级| 亚洲国产美女搞黄色| 久久国产精品99久久久久久老狼| 成人一区二区三区| 欧美三级日韩三级| www一区二区| 一区二区在线免费观看| 美女一区二区三区| 91偷拍与自偷拍精品| 91精品国产一区二区三区香蕉| 久久影院视频免费| 亚洲最色的网站| 韩国欧美国产一区| 欧美日韩在线综合| 欧美精彩视频一区二区三区| 亚洲最新视频在线播放| 国产精品一区二区男女羞羞无遮挡| 色综合久久综合网97色综合| 日韩欧美在线影院| 洋洋成人永久网站入口| 久久99精品久久久久久动态图 | 99精品视频在线播放观看| 欧美高清视频在线高清观看mv色露露十八 | 久久精品夜夜夜夜久久| 一区二区三区在线影院| 国产精品 欧美精品| 9191成人精品久久| 亚洲综合激情网| 成人av在线影院| 久久一区二区三区四区| 亚洲一区中文日韩| 成人av网站在线| 久久久久久亚洲综合影院红桃| 日韩国产在线观看一区| 91麻豆免费在线观看| 久久精品一二三| 韩国精品一区二区| 欧美不卡在线视频| 免费高清在线一区| 欧美久久高跟鞋激| 亚洲二区在线观看| 在线精品视频免费播放| 亚洲男人的天堂在线aⅴ视频| 国产二区国产一区在线观看| 日韩精品一区在线观看| 免费欧美高清视频| 欧美一级艳片视频免费观看| 日韩精品视频网| 欧美日韩亚洲另类| 午夜在线成人av| 欧美日韩国产综合一区二区三区| 亚洲专区一二三| 欧美午夜寂寞影院| 五月天丁香久久| 欧美日韩国产高清一区二区三区 | 国产一区视频在线看| 精品国产一区二区在线观看| 免费高清在线视频一区·| 日韩欧美一区二区久久婷婷| 久久精品国内一区二区三区| 欧美mv日韩mv国产|