zoukankan      html  css  js  c++  java
  • opencv ocl_morphologyEx

    opencv   ocl_morphologyEx

    static bool ocl_morphologyEx(InputArray _src, OutputArray _dst, int op,
                                 InputArray kernel, Point anchor, int iterations,
                                 int borderType, const Scalar& borderValue)
    {
        _dst.createSameSize(_src, _src.type());
        bool submat = _dst.isSubmatrix();
        UMat temp;
        _OutputArray _temp = submat ? _dst : _OutputArray(temp);
    
        switch( op )
        {
        case MORPH_ERODE:
            if (!ocl_morphOp( _src, _dst, kernel, anchor, iterations, MORPH_ERODE, borderType, borderValue ))
                return false;
            break;
        case MORPH_DILATE:
            if (!ocl_morphOp( _src, _dst, kernel, anchor, iterations, MORPH_DILATE, borderType, borderValue ))
                return false;
            break;
        case MORPH_OPEN:
            if (!ocl_morphOp( _src, _temp, kernel, anchor, iterations, MORPH_ERODE, borderType, borderValue ))
                return false;
            if (!ocl_morphOp( _temp, _dst, kernel, anchor, iterations, MORPH_DILATE, borderType, borderValue ))
                return false;
            break;
        case MORPH_CLOSE:
            if (!ocl_morphOp( _src, _temp, kernel, anchor, iterations, MORPH_DILATE, borderType, borderValue ))
                return false;
            if (!ocl_morphOp( _temp, _dst, kernel, anchor, iterations, MORPH_ERODE, borderType, borderValue ))
                return false;
            break;
        case MORPH_GRADIENT:
            if (!ocl_morphOp( _src, temp, kernel, anchor, iterations, MORPH_ERODE, borderType, borderValue ))
                return false;
            if (!ocl_morphOp( _src, _dst, kernel, anchor, iterations, MORPH_DILATE, borderType, borderValue, MORPH_GRADIENT, temp ))
                return false;
            break;
        case MORPH_TOPHAT:
            if (!ocl_morphOp( _src, _temp, kernel, anchor, iterations, MORPH_ERODE, borderType, borderValue ))
                return false;
            if (!ocl_morphOp( _temp, _dst, kernel, anchor, iterations, MORPH_DILATE, borderType, borderValue, MORPH_TOPHAT, _src ))
                return false;
            break;
        case MORPH_BLACKHAT:
            if (!ocl_morphOp( _src, _temp, kernel, anchor, iterations, MORPH_DILATE, borderType, borderValue ))
                return false;
            if (!ocl_morphOp( _temp, _dst, kernel, anchor, iterations, MORPH_ERODE, borderType, borderValue, MORPH_BLACKHAT, _src ))
                return false;
            break;
        default:
            CV_Error( CV_StsBadArg, "unknown morphological operation" );
        }
    
        return true;
    }

    代码参考:opencv3_4_1opencv-3.4.1modulesimgprocsrcmorph.cpp

    ##############################################

    QQ 3087438119
  • 相关阅读:
    电商平台开发笔记5.nuxt项目中深度选择器解决el-input高度设置无效
    电商平台开发笔记4.css选择器之~波浪号使用
    电商平台开发笔记3.nuxt全局css的引入
    电商平台开发笔记2.Nuxt增加对less支持,解决This relative module was not found报错
    电商平台开发笔记1.Nuxt项目创建+Eslint代码保存自动格式化
    vue-cli 4.x 发布前的一些优化
    VueCli 4.x npm run build后主页空白的原因及解决方案
    VSCode 保存时自动ESlint格式化
    git 常用操作笔记
    VSCode下手动构建webpack项目
  • 原文地址:https://www.cnblogs.com/herd/p/15423231.html
Copyright © 2011-2022 走看看