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

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

?? cxarithm.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 5 頁
字號:

    if( !maskarr )
    {
        if( CV_IS_MAT_CONT( src->type & dst->type ))
        {
            if( size.width <= CV_MAX_INLINE_MAT_OP_SIZE )
            {
                int len = size.width * size.height;

                if( type == CV_32FC1 )
                {
                    const float* srcdata = (const float*)(src->data.ptr);
                    float* dstdata = (float*)(dst->data.ptr);
                
                    do
                    {
                        dstdata[len-1] = (float)(scalar.val[0] - srcdata[len-1]);
                    }
                    while( --len );

                    EXIT;
                }

                if( type == CV_64FC1 )
                {
                    const double* srcdata = (const double*)(src->data.ptr);
                    double* dstdata = (double*)(dst->data.ptr);
                
                    do
                    {
                        dstdata[len-1] = scalar.val[0] - srcdata[len-1];
                    }
                    while( --len );

                    EXIT;
                }
            }
            cont_flag = 1;
        }
        
        dy = size.height;
        copym_func = 0;
        tdst = dst;
    }
    else
    {
        int buf_size, elem_size;
        
        if( !CV_IS_MAT(mask) )
            CV_CALL( mask = cvGetMat( mask, &maskstub ));

        if( !CV_IS_MASK_ARR(mask))
            CV_ERROR( CV_StsBadMask, "" );

        if( !CV_ARE_SIZES_EQ( mask, dst ))
            CV_ERROR( CV_StsUnmatchedSizes, "" );

        cont_flag = CV_IS_MAT_CONT( src->type & dst->type & mask->type );
        elem_size = CV_ELEM_SIZE(type);

        dy = CV_MAX_LOCAL_SIZE/(elem_size*size.height);
        dy = MAX(dy,1);
        dy = MIN(dy,size.height);
        dstbuf = cvMat( dy, size.width, type );
        if( !cont_flag )
            dstbuf.step = cvAlign( dstbuf.step, 8 );
        buf_size = dstbuf.step ? dstbuf.step*dy : size.width*elem_size;
        if( buf_size > CV_MAX_LOCAL_SIZE )
        {
            CV_CALL( buffer = (uchar*)cvAlloc( buf_size ));
            local_alloc = 0;
        }
        else
            buffer = (uchar*)cvAlloc( buf_size );
        dstbuf.data.ptr = buffer;
        tdst = &dstbuf;
        
        copym_func = icvGetCopyMaskFunc( elem_size );
    }

    func = (CvFunc2D_2A1P)(subr_tab.fn_2d[depth]);
    if( !func )
        CV_ERROR( CV_StsUnsupportedFormat, "" );

    src_step = src->step;
    dst_step = dst->step;
    tdst_step = tdst->step;
    mask_step = mask ? mask->step : 0;

    CV_CALL( cvScalarToRawData( &scalar, buf, sctype, 1 ));

    for( y = 0; y < size.height; y += dy )
    {
        tsize.width = size.width;
        tsize.height = dy;
        if( y + dy > size.height )
            tsize.height = size.height - y;
        if( cont_flag || tsize.height == 1 )
        {
            tsize.width *= tsize.height;
            tsize.height = 1;
            src_step = tdst_step = dst_step = mask_step = CV_STUB_STEP;
        }

        IPPI_CALL( func( src->data.ptr + y*src->step, src_step,
                         tdst->data.ptr, tdst_step,
                         cvSize( tsize.width*cn, tsize.height ), buf ));
        if( mask )
        {
            IPPI_CALL( copym_func( tdst->data.ptr, tdst_step, dst->data.ptr + y*dst->step,
                                   dst_step, tsize, mask->data.ptr + y*mask->step, mask_step ));
        }
    }

    __END__;

    if( !local_alloc )
        cvFree( &buffer );
}


/******************************* A D D ********************************/

CV_IMPL void
cvAdd( const void* srcarr1, const void* srcarr2,
       void* dstarr, const void* maskarr )
{
    static CvFuncTable add_tab;
    static int inittab = 0;
    int local_alloc = 1;
    uchar* buffer = 0;

    CV_FUNCNAME( "cvAdd" );

    __BEGIN__;

    int y, dy, type, depth, cn, cont_flag = 0;
    int src1_step, src2_step, dst_step, tdst_step, mask_step;
    CvMat srcstub1, *src1 = (CvMat*)srcarr1;
    CvMat srcstub2, *src2 = (CvMat*)srcarr2;
    CvMat dststub,  *dst = (CvMat*)dstarr;
    CvMat maskstub, *mask = (CvMat*)maskarr;
    CvMat dstbuf, *tdst;
    CvFunc2D_3A func;
    CvFunc2D_3A1I func_sfs;
    CvCopyMaskFunc copym_func;
    CvSize size, tsize;

    if( !CV_IS_MAT(src1) || !CV_IS_MAT(src2) || !CV_IS_MAT(dst))
    {
        if( CV_IS_MATND(src1) || CV_IS_MATND(src2) || CV_IS_MATND(dst))
        {
            CvArr* arrs[] = { src1, src2, dst };
            CvMatND stubs[3];
            CvNArrayIterator iterator;

            if( maskarr )
                CV_ERROR( CV_StsBadMask,
                "This operation on multi-dimensional arrays does not support mask" );

            CV_CALL( cvInitNArrayIterator( 3, arrs, 0, stubs, &iterator ));

            type = iterator.hdr[0]->type;
            iterator.size.width *= CV_MAT_CN(type);

            if( !inittab )
            {
                icvInitAddC1RTable( &add_tab );
                inittab = 1;
            }

            depth = CV_MAT_DEPTH(type);
            if( depth <= CV_16S )
            {
                func_sfs = (CvFunc2D_3A1I)(add_tab.fn_2d[depth]);
                if( !func_sfs )
                    CV_ERROR( CV_StsUnsupportedFormat, "" );

                do
                {
                    IPPI_CALL( func_sfs( iterator.ptr[0], CV_STUB_STEP,
                                         iterator.ptr[1], CV_STUB_STEP,
                                         iterator.ptr[2], CV_STUB_STEP,
                                         iterator.size, 0 ));
                }
                while( cvNextNArraySlice( &iterator ));

            }
            else
            {
                func = (CvFunc2D_3A)(add_tab.fn_2d[depth]);
                if( !func )
                    CV_ERROR( CV_StsUnsupportedFormat, "" );

                do
                {
                    IPPI_CALL( func( iterator.ptr[0], CV_STUB_STEP,
                                     iterator.ptr[1], CV_STUB_STEP,
                                     iterator.ptr[2], CV_STUB_STEP,
                                     iterator.size ));
                }
                while( cvNextNArraySlice( &iterator ));
            }
            EXIT;
        }
        else
        {
            int coi1 = 0, coi2 = 0, coi3 = 0;
            
            CV_CALL( src1 = cvGetMat( src1, &srcstub1, &coi1 ));
            CV_CALL( src2 = cvGetMat( src2, &srcstub2, &coi2 ));
            CV_CALL( dst = cvGetMat( dst, &dststub, &coi3 ));
            if( coi1 + coi2 + coi3 != 0 )
                CV_ERROR( CV_BadCOI, "" );
        }
    }

    if( !CV_ARE_TYPES_EQ( src1, src2 ) || !CV_ARE_TYPES_EQ( src1, dst ))
        CV_ERROR_FROM_CODE( CV_StsUnmatchedFormats );

    if( !CV_ARE_SIZES_EQ( src1, src2 ) || !CV_ARE_SIZES_EQ( src1, dst ))
        CV_ERROR_FROM_CODE( CV_StsUnmatchedSizes );

    type = CV_MAT_TYPE(src1->type);
    size = cvGetMatSize( src1 );
    depth = CV_MAT_DEPTH(type);
    cn = CV_MAT_CN(type);

    if( !mask )
    {
        if( CV_IS_MAT_CONT( src1->type & src2->type & dst->type ))
        {
            int len = size.width*size.height*cn;

            if( len <= CV_MAX_INLINE_MAT_OP_SIZE*CV_MAX_INLINE_MAT_OP_SIZE )
            {
                if( depth == CV_32F )
                {
                    const float* src1data = (const float*)(src1->data.ptr);
                    const float* src2data = (const float*)(src2->data.ptr);
                    float* dstdata = (float*)(dst->data.ptr);

                    do
                    {
                        dstdata[len-1] = (float)(src1data[len-1] + src2data[len-1]);
                    }
                    while( --len );

                    EXIT;
                }

                if( depth == CV_64F )
                {
                    const double* src1data = (const double*)(src1->data.ptr);
                    const double* src2data = (const double*)(src2->data.ptr);
                    double* dstdata = (double*)(dst->data.ptr);

                    do
                    {
                        dstdata[len-1] = src1data[len-1] + src2data[len-1];
                    }
                    while( --len );

                    EXIT;
                }
            }
            cont_flag = 1;
        }

        dy = size.height;
        copym_func = 0;
        tdst = dst;
    }
    else
    {
        int buf_size, elem_size;
        
        if( !CV_IS_MAT(mask) )
            CV_CALL( mask = cvGetMat( mask, &maskstub ));

        if( !CV_IS_MASK_ARR(mask))
            CV_ERROR( CV_StsBadMask, "" );

        if( !CV_ARE_SIZES_EQ( mask, dst ))
            CV_ERROR( CV_StsUnmatchedSizes, "" );

        cont_flag = CV_IS_MAT_CONT( src1->type & src2->type & dst->type & mask->type );
        elem_size = CV_ELEM_SIZE(type);

        dy = CV_MAX_LOCAL_SIZE/(elem_size*size.height);
        dy = MAX(dy,1);
        dy = MIN(dy,size.height);
        dstbuf = cvMat( dy, size.width, type );
        if( !cont_flag )
            dstbuf.step = cvAlign( dstbuf.step, 8 );
        buf_size = dstbuf.step ? dstbuf.step*dy : size.width*elem_size;
        if( buf_size > CV_MAX_LOCAL_SIZE )
        {
            CV_CALL( buffer = (uchar*)cvAlloc( buf_size ));
            local_alloc = 0;
        }
        else
            buffer = (uchar*)cvAlloc( buf_size );
        dstbuf.data.ptr = buffer;
        tdst = &dstbuf;
        
        copym_func = icvGetCopyMaskFunc( elem_size );
    }

    if( !inittab )
    {
        icvInitAddC1RTable( &add_tab );
        inittab = 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利精品导航| 亚洲一级电影视频| 五月婷婷激情综合网| 麻豆成人av在线| 国产成人亚洲精品青草天美 | 中文欧美字幕免费| 偷拍日韩校园综合在线| av中文字幕在线不卡| 制服丝袜中文字幕亚洲| 日韩一区在线免费观看| 毛片av中文字幕一区二区| 高清国产一区二区三区| 日韩一级片网站| 亚洲欧美日本在线| 成人av免费在线播放| 日韩欧美国产三级| 国产在线不卡一区| 欧美偷拍一区二区| 国产精品久久毛片av大全日韩| 久久99最新地址| 欧美日韩国产欧美日美国产精品| 中文字幕一区二区视频| 精彩视频一区二区三区| 欧美午夜免费电影| 一区二区三区在线观看国产| 国产成人在线免费| 26uuu亚洲综合色| 午夜精品视频在线观看| 91在线观看美女| 国产精品国产三级国产aⅴ入口| 久久成人免费网| 日韩精品中文字幕一区二区三区| 亚洲一区二区在线免费观看视频| 国产一区亚洲一区| 精品国产污网站| 天堂久久久久va久久久久| 欧美精品久久久久久久多人混战 | 91精品国产aⅴ一区二区| 亚洲一区二区三区三| 99精品在线观看视频| 亚洲精品一区二区三区蜜桃下载| 久久国产精品第一页| 在线不卡的av| 日本不卡在线视频| 欧美精品乱码久久久久久| 国产精品美女久久久久久久网站| 成人黄色在线看| 精品国产乱码久久| 国产一区二区三区黄视频 | 欧美色图免费看| 自拍偷拍国产亚洲| 91色综合久久久久婷婷| 成人免费在线视频观看| 91欧美一区二区| 亚洲人亚洲人成电影网站色| 国产一区亚洲一区| 国产精品美女久久福利网站| 丰满少妇久久久久久久| 亚洲欧洲精品一区二区三区 | 美日韩一级片在线观看| 在线播放日韩导航| 亚洲高清免费一级二级三级| 91.com视频| 免费成人在线观看| 久久久噜噜噜久久人人看| 极品美女销魂一区二区三区| 久久女同精品一区二区| 国产高清不卡二三区| 国产女主播一区| 91丨九色丨蝌蚪富婆spa| 亚洲男帅同性gay1069| 欧美久久久久久久久中文字幕| 亚洲不卡一区二区三区| 欧美亚洲禁片免费| 久久精工是国产品牌吗| 久久综合一区二区| av成人老司机| 一区二区三区欧美日| 欧美成人r级一区二区三区| 国产一区二区美女| 国产精品国产成人国产三级| 欧美日韩美女一区二区| 青草国产精品久久久久久| 久久久久久久久久美女| 国产成人亚洲综合a∨婷婷图片| 亚洲美女屁股眼交3| 欧美精品粉嫩高潮一区二区| 另类小说视频一区二区| 中文字幕一区视频| 在线视频一区二区三| 狠狠色综合日日| 亚洲欧洲另类国产综合| 色婷婷av一区二区三区大白胸 | 国产精品无圣光一区二区| 91久久国产最好的精华液| 亚洲成人av一区二区三区| 亚洲精品一线二线三线无人区| 国产不卡在线播放| 亚洲黄一区二区三区| 精品欧美久久久| 成人涩涩免费视频| 日本麻豆一区二区三区视频| 国产校园另类小说区| 白白色 亚洲乱淫| 蜜桃免费网站一区二区三区 | 在线观看网站黄不卡| 久久精品国产一区二区三区免费看 | 亚洲电影中文字幕在线观看| 91精品视频网| 高清国产一区二区三区| 性感美女久久精品| 中文字幕一区二区视频| 欧美一区二区成人6969| 一本久道中文字幕精品亚洲嫩| 日本午夜一区二区| 久久久不卡网国产精品二区| 欧美日韩国产一级| 粉嫩13p一区二区三区| 欧美a级一区二区| 国产精品国模大尺度视频| 欧美电视剧在线看免费| 91久久奴性调教| 粉嫩蜜臀av国产精品网站| 日韩成人精品在线观看| 最新热久久免费视频| 精品久久一区二区| 欧美在线一区二区三区| 处破女av一区二区| 裸体在线国模精品偷拍| 久久中文娱乐网| 91精品在线一区二区| 91丝袜美女网| 波多野结衣中文字幕一区| 日本一区中文字幕| 日韩国产高清在线| 亚洲激情图片qvod| 亚洲人精品午夜| 久久久亚洲精华液精华液精华液| 97久久久精品综合88久久| 国产**成人网毛片九色 | 久久精品男人天堂av| 欧美一个色资源| 在线日韩国产精品| 一本一道久久a久久精品| 国产伦精品一区二区三区免费| 免费人成在线不卡| 性做久久久久久免费观看| 亚洲色图清纯唯美| 日韩理论在线观看| 国产欧美一区二区精品性色| 久久久久国产免费免费| 日韩一区二区三区三四区视频在线观看| 在线观看日韩av先锋影音电影院| 国产98色在线|日韩| 久久99精品一区二区三区| 蜜桃视频在线一区| 亚洲大片精品永久免费| 亚洲v中文字幕| 亚洲黄色录像片| 亚洲综合色在线| 亚洲精品日产精品乱码不卡| 欧美日韩高清一区二区不卡| 欧美三级电影精品| 91成人在线免费观看| 欧美日韩一卡二卡| 欧美日韩亚洲高清一区二区| 欧美视频自拍偷拍| 欧美日韩三级一区| 欧美一区三区四区| 欧美一区二区视频网站| 欧美一区二区私人影院日本| 欧美一区二区啪啪| 欧美欧美欧美欧美| 日韩网站在线看片你懂的| 91精品国产乱码| 久久久久久**毛片大全| 久久精品在线免费观看| 国产精品久久久久久久久久久免费看 | 亚洲理论在线观看| 亚洲美女在线国产| 亚洲精品中文字幕在线观看| 亚洲国产精品久久久男人的天堂| 一区二区三区日韩精品视频| 丝袜亚洲另类丝袜在线| 免费成人你懂的| 国产一区二区网址| 成人毛片老司机大片| 国产一区二区在线观看免费| 成人综合在线视频| 成人a免费在线看| 欧美日韩免费一区二区三区视频 | 久久99日本精品| 国产一区二区三区在线观看免费视频| 国产精一区二区三区| www.亚洲精品| 欧美日韩高清在线| 精品成人a区在线观看| 欧美国产禁国产网站cc| 亚洲女性喷水在线观看一区| 婷婷亚洲久悠悠色悠在线播放|