zoukankan      html  css  js  c++  java
  • FilterEngine::apply

    void FilterEngine::apply(const Mat& src, Mat& dst,
        const Rect& srcRoi, Point dstOfs, bool isolated)
    {
        // check matrix types
        CV_Assert( src.type() == srcType && dst.type() == dstType );

        // handle the "whole image" case
        Rect _srcRoi = srcRoi;
        if( _srcRoi == Rect(0,0,-1,-1) )
            _srcRoi = Rect(0,0,src.cols,src.rows);

        // check if the destination ROI is inside dst.
        // and FilterEngine::start will check if the source ROI is inside src.
        CV_Assert( dstOfs.x >= 0 && dstOfs.y >= 0 &&
            dstOfs.x + _srcRoi.width <= dst.cols &&
            dstOfs.y + _srcRoi.height <= dst.rows );

        // start filtering
        int y = start(src, _srcRoi, isolated);

        // process the whole ROI. Note that "endY - startY" is the total number
        // of the source rows to process
        // (including the possible rows outside of srcRoi but inside the source image)
        proceed( src.data + y*src.step,
                 (int)src.step, endY - startY,
                 dst.data + dstOfs.y*dst.step +
                 dstOfs.x*dst.elemSize(), (int)dst.step );
    }

    //////////////////////////////////////////////////////////

    Key codes:
        // start filtering
        int y = start(src, _srcRoi, isolated);//only a init;

    So  it calls "start" to proceed. We want to know , where convolution happens, See start

    proceed is the core.

     proceed( src.data + y*src.step,
                 (int)src.step, endY - startY,
                 dst.data + dstOfs.y*dst.step +
                 dstOfs.x*dst.elemSize(), (int)dst.step );

  • 相关阅读:
    fiddler使用
    Laravel数据库操作
    mysql 小知识点备忘(一)
    移动端和服务器端通信
    js函数和代码片段
    tomcat9目录结构解析
    数据库三范式的理解
    win10修改hosts文件
    Java十六进制字符串与二进制数组互转、&0xff的作用
    15、SpringBoot实现Excel的导入导出
  • 原文地址:https://www.cnblogs.com/stevenxiu/p/5591465.html
Copyright © 2011-2022 走看看