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

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

?? cvcontours.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
    CvSeqWriter  writer_ext;    CvSeqWriter  writer_int;    CvSeqWriter  writer;    CvSeqReader  reader;    CvSeq* external_contours;    CvSeq* internal_contours;    CvSeq* prev = 0;    if( !storage )        CV_ERROR( CV_StsNullPtr, "NULL storage pointer" );    if( !result )        CV_ERROR( CV_StsNullPtr, "NULL double CvSeq pointer" );    if( contourHeaderSize < (int)sizeof(CvContour))        CV_ERROR( CV_StsBadSize, "Contour header size must be >= sizeof(CvContour)" );    CV_CALL( storage00 = cvCreateChildMemStorage(storage));    CV_CALL( storage01 = cvCreateChildMemStorage(storage));    {        CvMat stub, *mat;        CV_CALL( mat = cvGetMat( src, &stub ));        if( !CV_IS_MASK_ARR(mat))            CV_ERROR( CV_StsBadArg, "Input array must be 8uC1 or 8sC1" );        src_data = mat->data.ptr;        img_step = mat->step;        img_size = cvGetMatSize( mat );    }    // Create temporary sequences    runs = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvLinkedRunPoint), storage00 );    cvStartAppendToSeq( runs, &writer );    cvStartWriteSeq( 0, sizeof(CvSeq), sizeof(CvLinkedRunPoint*), storage01, &writer_ext );    cvStartWriteSeq( 0, sizeof(CvSeq), sizeof(CvLinkedRunPoint*), storage01, &writer_int );    tmp_prev = &(tmp);    tmp_prev->next = 0;    tmp_prev->link = 0;        // First line. None of runs is binded    tmp.pt.y = 0;    i = 0;    CV_WRITE_SEQ_ELEM( tmp, writer );    upper_line = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer );        tmp_prev = upper_line;    for( j = 0; j < img_size.width; )    {        for( ; j < img_size.width && !ICV_IS_COMPONENT_POINT(src_data[j]); j++ )            ;        if( j == img_size.width )            break;        tmp.pt.x = j;        CV_WRITE_SEQ_ELEM( tmp, writer );        tmp_prev->next = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer );        tmp_prev = tmp_prev->next;        for( ; j < img_size.width && ICV_IS_COMPONENT_POINT(src_data[j]); j++ )            ;        tmp.pt.x = j-1;        CV_WRITE_SEQ_ELEM( tmp, writer );        tmp_prev->next = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer );        tmp_prev->link = tmp_prev->next;        // First point of contour        CV_WRITE_SEQ_ELEM( tmp_prev, writer_ext );        tmp_prev = tmp_prev->next;    }    cvFlushSeqWriter( &writer );    upper_line = upper_line->next;    upper_total = runs->total - 1;    last_elem = tmp_prev;    tmp_prev->next = 0;        for( i = 1; i < img_size.height; i++ )    {//------// Find runs in next line        src_data += img_step;        tmp.pt.y = i;        all_total = runs->total;        for( j = 0; j < img_size.width; )        {            for( ; j < img_size.width && !ICV_IS_COMPONENT_POINT(src_data[j]); j++ )                ;            if( j == img_size.width ) break;            tmp.pt.x = j;            CV_WRITE_SEQ_ELEM( tmp, writer );            tmp_prev->next = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer );            tmp_prev = tmp_prev->next;            for( ; j < img_size.width && ICV_IS_COMPONENT_POINT(src_data[j]); j++ )                ;            tmp.pt.x = j-1;            CV_WRITE_SEQ_ELEM( tmp, writer );            tmp_prev = tmp_prev->next = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer );        }//j        cvFlushSeqWriter( &writer );        lower_line = last_elem->next;        lower_total = runs->total - all_total;        last_elem = tmp_prev;        tmp_prev->next = 0;//------////------// Find links between runs of lower_line and upper_line        upper_run = upper_line;        lower_run = lower_line;        connect_flag = ICV_SINGLE;        for( k = 0, n = 0; k < upper_total/2 && n < lower_total/2; )        {            switch( connect_flag )            {            case ICV_SINGLE:                if( upper_run->next->pt.x < lower_run->next->pt.x )                {                    if( upper_run->next->pt.x >= lower_run->pt.x  -1 )                    {                        lower_run->link = upper_run;                        connect_flag = ICV_CONNECTING_ABOVE;                        prev_point = upper_run->next;                    }                    else                        upper_run->next->link = upper_run;                    k++;                    upper_run = upper_run->next->next;                }                else                {                    if( upper_run->pt.x <= lower_run->next->pt.x  +1 )                    {                        lower_run->link = upper_run;                        connect_flag = ICV_CONNECTING_BELOW;                        prev_point = lower_run->next;                    }                    else                    {                        lower_run->link = lower_run->next;                        // First point of contour                        CV_WRITE_SEQ_ELEM( lower_run, writer_ext );                    }                    n++;                    lower_run = lower_run->next->next;                }                break;            case ICV_CONNECTING_ABOVE:                if( upper_run->pt.x > lower_run->next->pt.x +1 )                {                    prev_point->link = lower_run->next;                    connect_flag = ICV_SINGLE;                    n++;                    lower_run = lower_run->next->next;                }                else                {                    prev_point->link = upper_run;                    if( upper_run->next->pt.x < lower_run->next->pt.x )                    {                        k++;                        prev_point = upper_run->next;                        upper_run = upper_run->next->next;                    }                    else                    {                        connect_flag = ICV_CONNECTING_BELOW;                        prev_point = lower_run->next;                        n++;                        lower_run = lower_run->next->next;                    }                }                break;            case ICV_CONNECTING_BELOW:                if( lower_run->pt.x > upper_run->next->pt.x +1 )                {                    upper_run->next->link = prev_point;                    connect_flag = ICV_SINGLE;                    k++;                    upper_run = upper_run->next->next;                }                else                {                    // First point of contour                    CV_WRITE_SEQ_ELEM( lower_run, writer_int );                    lower_run->link = prev_point;                    if( lower_run->next->pt.x < upper_run->next->pt.x )                    {                        n++;                        prev_point = lower_run->next;                        lower_run = lower_run->next->next;                    }                    else                    {                        connect_flag = ICV_CONNECTING_ABOVE;                        k++;                        prev_point = upper_run->next;                        upper_run = upper_run->next->next;                    }                }                break;                      }        }// k, n        for( ; n < lower_total/2; n++ )        {            if( connect_flag != ICV_SINGLE )            {                prev_point->link = lower_run->next;                connect_flag = ICV_SINGLE;                lower_run = lower_run->next->next;                continue;            }            lower_run->link = lower_run->next;            //First point of contour            CV_WRITE_SEQ_ELEM( lower_run, writer_ext );            lower_run = lower_run->next->next;        }        for( ; k < upper_total/2; k++ )        {            if( connect_flag != ICV_SINGLE )            {                upper_run->next->link = prev_point;                connect_flag = ICV_SINGLE;                upper_run = upper_run->next->next;                continue;            }            upper_run->next->link = upper_run;            upper_run = upper_run->next->next;        }        upper_line = lower_line;        upper_total = lower_total;    }//i    upper_run = upper_line;    //the last line of image    for( k = 0; k < upper_total/2; k++ )    {        upper_run->next->link = upper_run;        upper_run = upper_run->next->next;    }//------////------//Find end read contours    external_contours = cvEndWriteSeq( &writer_ext );    internal_contours = cvEndWriteSeq( &writer_int );    for( k = 0; k < 2; k++ )    {        CvSeq* contours = k == 0 ? external_contours : internal_contours;        cvStartReadSeq( contours, &reader );        for( j = 0; j < contours->total; j++, count++ )        {            CvLinkedRunPoint* p_temp;            CvLinkedRunPoint* p00;            CvLinkedRunPoint* p01;            CvSeq* contour;            CV_READ_SEQ_ELEM( p00, reader );            p01 = p00;            if( !p00->link )                continue;            cvStartWriteSeq( CV_SEQ_ELTYPE_POINT | CV_SEQ_POLYLINE | CV_SEQ_FLAG_CLOSED,                             contourHeaderSize, sizeof(CvPoint), storage, &writer );            do            {                CV_WRITE_SEQ_ELEM( p00->pt, writer );                p_temp = p00;                p00 = p00->link;                p_temp->link = 0;            }            while( p00 != p01 );            contour = cvEndWriteSeq( &writer );            cvBoundingRect( contour, 1 );            if( k != 0 )                contour->flags |= CV_SEQ_FLAG_HOLE;            if( !first )                prev = first = contour;            else            {                contour->h_prev = prev;                prev = prev->h_next = contour;            }        }    }    __END__;    if( !first )        count = -1;    if( result )        *result = first;    cvReleaseMemStorage(&storage00);    cvReleaseMemStorage(&storage01);    return count;}/*F/////////////////////////////////////////////////////////////////////////////////////////    Name: cvFindContours//    Purpose://      Finds all the contours on the bi-level image.//    Context://    Parameters://      img  - source image.//             Non-zero pixels are considered as 1-pixels//             and zero pixels as 0-pixels.//      step - full width of source image in bytes.//      size - width and height of the image in pixels//      storage - pointer to storage where will the output contours be placed.//      header_size - header size of resulting contours//      mode - mode of contour retrieval.//      method - method of approximation that is applied to contours//      first_contour - pointer to first contour pointer//    Returns://      CV_OK or error code//    Notes://F*/CV_IMPL intcvFindContours( void*  img,  CvMemStorage*  storage,                                CvSeq**  firstContour, int  cntHeaderSize,                                 int  mode,                 int  method, CvPoint offset ){    CvContourScanner scanner = 0;    CvSeq *contour = 0;    int count = -1;        CV_FUNCNAME( "cvFindContours" );    __BEGIN__;    if( !firstContour )        CV_ERROR( CV_StsNullPtr, "NULL double CvSeq pointer" );    if( method == CV_LINK_RUNS )    {        if( offset.x != 0 || offset.y != 0 )            CV_ERROR( CV_StsOutOfRange,            "Nonzero offset is not supported in CV_LINK_RUNS yet" );        CV_CALL( count = icvFindContoursInInterval( img, storage,                                    firstContour, cntHeaderSize ));    }    else    {        CV_CALL( scanner = cvStartFindContours( img, storage,                        cntHeaderSize, mode, method, offset ));        assert( scanner );        do        {            count++;            contour = cvFindNextContour( scanner );        }        while( contour != 0 );        *firstContour = cvEndFindContours( &scanner );        }    __END__;    return count;}/* End of file. */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美猛男超大videosgay| 另类小说视频一区二区| 久久精品无码一区二区三区| 日韩一区二区三免费高清| 欧美性三三影院| 在线成人小视频| 日韩欧美国产午夜精品| 欧美不卡一区二区| 精品久久久久久亚洲综合网| 久久先锋资源网| 久久久久久久电影| 一色桃子久久精品亚洲| 亚洲精品菠萝久久久久久久| 亚洲成人777| 久久se这里有精品| 成人小视频在线观看| 成人免费视频caoporn| 91丝袜美女网| 欧美日韩国产综合久久| 日韩欧美国产一二三区| 欧美国产日韩a欧美在线观看| 中文字幕一区二区在线观看| 亚洲精品videosex极品| 日产精品久久久久久久性色| 国产精品一区免费视频| 日本高清不卡一区| 91精品国模一区二区三区| 欧美成人一区二区三区片免费| 国产亚洲精品免费| 亚洲成人久久影院| 国产美女在线精品| 91成人在线观看喷潮| 欧美白人最猛性xxxxx69交| 最近日韩中文字幕| 日本在线观看不卡视频| 成人白浆超碰人人人人| 欧美性受xxxx黑人xyx性爽| 亚洲精品在线三区| 亚洲一区二区三区美女| 国产精品456| 欧美精品色综合| 亚洲素人一区二区| 国产麻豆91精品| 7777精品伊人久久久大香线蕉经典版下载 | 99在线精品免费| 欧美一区二区日韩| 亚洲视频你懂的| 国产麻豆视频一区二区| 精品视频资源站| 亚洲精品视频在线| 国产成人av电影免费在线观看| 3d成人动漫网站| 亚洲女同ⅹxx女同tv| 国模大尺度一区二区三区| 欧美日韩国产影片| 亚洲综合色丁香婷婷六月图片| 精品一区二区在线观看| 欧美综合色免费| 亚洲精品久久久蜜桃| 成人av电影在线播放| 日韩三级电影网址| 丝袜美腿亚洲一区| 欧美日韩国产一区| 亚洲国产视频在线| 欧美性生活久久| 亚洲一区二区精品3399| 91成人看片片| 亚洲精品自拍动漫在线| jvid福利写真一区二区三区| 国产日韩欧美在线一区| 精品一区二区三区视频| 日韩欧美三级在线| 久草这里只有精品视频| 欧美一区二区三区思思人| 性感美女久久精品| 91精品国产综合久久久久久久久久| 亚洲午夜激情网页| 欧美精品第一页| 日韩电影在线观看网站| 日韩视频永久免费| 国产一区二区三区免费播放| 久久久久久免费网| 成人免费视频播放| 亚洲色图在线播放| 欧美日韩视频一区二区| 婷婷六月综合网| 欧美一区二区日韩| 加勒比av一区二区| 国产精品久久久99| 91网站在线观看视频| 亚洲一线二线三线视频| 91精品婷婷国产综合久久| 久久99精品久久久久久国产越南| xnxx国产精品| 成人av免费观看| 五月天激情综合| 26uuu色噜噜精品一区二区| 国产69精品久久久久毛片| 亚洲视频一区在线| 日韩欧美一级二级| 成人ar影院免费观看视频| 亚洲国产一区视频| 2023国产精华国产精品| 99久久99久久综合| 日本vs亚洲vs韩国一区三区二区| 国产欧美日韩麻豆91| 欧美最猛性xxxxx直播| 精品亚洲国内自在自线福利| 亚洲免费在线看| 精品国产一区二区三区四区四| 成人a级免费电影| 日韩黄色免费网站| 国产精品夫妻自拍| 日韩一区二区三区av| 91日韩精品一区| 精品制服美女丁香| 一二三四社区欧美黄| 精品国产3级a| 欧美日韩国产一二三| 不卡一区二区在线| 久99久精品视频免费观看| 亚洲激情成人在线| 久久久精品tv| 日韩三区在线观看| 欧洲一区二区av| av电影一区二区| 精品综合免费视频观看| 亚洲第一搞黄网站| 亚洲天堂福利av| 国产精品国产成人国产三级| 精品国产乱码久久| 91精品国产91久久久久久一区二区| 成人av动漫网站| 成人黄色在线看| 国产美女精品在线| 久久精品国内一区二区三区| 亚洲成在人线在线播放| 亚洲男人都懂的| 中文字幕人成不卡一区| 欧美国产乱子伦| 欧美激情一二三区| 久久久久青草大香线综合精品| 日韩小视频在线观看专区| 欧美老人xxxx18| 欧美军同video69gay| 欧美在线不卡视频| 在线观看亚洲a| 欧美在线观看你懂的| 91福利在线播放| 欧美视频日韩视频| 欧美剧情电影在线观看完整版免费励志电影 | 欧美一区午夜视频在线观看| 欧美亚一区二区| 欧美日韩一级大片网址| 欧美性猛交xxxxxx富婆| 欧美性生活久久| 欧美一三区三区四区免费在线看| 欧美高清视频一二三区 | 国产在线不卡一卡二卡三卡四卡| 天堂久久一区二区三区| 日日夜夜一区二区| 日韩一区欧美二区| 亚洲一区二区中文在线| 国产精品亚洲成人| 亚洲美腿欧美偷拍| 亚洲一区二区在线免费看| 国产精品一区二区在线看| 精品视频在线免费| 一区在线观看免费| 国产美女精品在线| 欧美一级欧美一级在线播放| 亚洲欧美色图小说| 成人va在线观看| 久久久精品免费网站| 午夜精品一区在线观看| 91捆绑美女网站| 欧美高清在线精品一区| 久久99精品视频| 日韩一区二区三区精品视频| 亚洲国产成人va在线观看天堂| 丰满少妇在线播放bd日韩电影| 日韩欧美一二区| 日韩精品一级二级| 欧美日韩一级二级| 亚洲国产视频直播| 色综合久久久久网| 亚洲图片激情小说| 91丨porny丨户外露出| 国产午夜久久久久| 国产一本一道久久香蕉| 久久一二三国产| 国产夫妻精品视频| 2023国产精品视频| 国产精品一区免费视频| 久久久噜噜噜久久人人看| 国产一区二区网址| ww亚洲ww在线观看国产| 久久66热re国产| 久久精品一区二区三区不卡牛牛| 国产精品综合在线视频|