• opencv::Sobel算子


    卷积应用-图像边缘提取

    卷积应用-图像边缘提取
        边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一,
        在图像特征提取、对象检测、模式识别等方面都有重要的作用。
        如何捕捉/提取边缘 – 对图像求它的一阶导数
         - delta =  f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘信号越强
    Sobel算子
        是离散微分算子(discrete differentiation operator),
        用来计算图像灰度的近似梯度Soble算子功能集合高斯平滑和微分求导
        又被称为一阶微分算子,求导算子,在水平和垂直两个方向上求导,得到图像X方法与Y方向梯度图像

    cv::Sobel (
        InputArray Src         // 输入图像
        OutputArray dst        // 输出图像,大小与输入图像一致
        int depth              // 输出图像深度. 
        Int dx                 // X方向,几阶导数
        int dy                 // Y方向,几阶导数. 
        int ksize              // SOBEL算子kernel大小,必须是1、3、5、7、
        double scale  = 1
        double delta = 0
        int borderType = BORDER_DEFAULT
    )
    cv::Scharr (
        InputArray Src        // 输入图像
        OutputArray dst       // 输出图像,大小与输入图像一致
        int depth             // 输出图像深度
        Int dx.               // X方向,几阶导数
        int dy                // Y方向,几阶导数
        double scale  = 1
        double delta = 0
        int borderType = BORDER_DEFAULT
    )
    其他API
    GaussianBlur( src, dst, Size(3,3), 0, 0, BORDER_DEFAULT ); cvtColor( src, gray, COLOR_RGB2GRAY ); addWeighted( A, 0.5,B, 0.5, 0, AB); convertScaleAbs(A, B)// 计算图像A的像素绝对值,输出到图像B
    int main(int argc, char** argv) {
        Mat src, dst;
        src = imread(STRPAHT2);
        if (!src.data) {
            printf("could not load image...
    ");
            return -1;
        }
        
        Mat gray_src;
        GaussianBlur(src, dst, Size(3, 3), 0, 0, BORDER_DEFAULT);
        cvtColor(dst, gray_src, CV_BGR2GRAY);
        //imshow("gray image", gray_src);
            
        Mat xgrad, ygrad;
    
        //Scharr(gray_src, xgrad, CV_16S, 1, 0, 3);
        //Scharr(gray_src, ygrad, CV_16S, 0, 1, 3);
        //convertScaleAbs(xgrad, xgrad);
        //convertScaleAbs(ygrad, ygrad);
        //imshow("xgrad", xgrad);
        //imshow("ygrad", ygrad);
    
        Sobel(gray_src, xgrad, CV_16S, 1, 0, 3);
        Sobel(gray_src, ygrad, CV_16S, 0, 1, 3);
        convertScaleAbs(xgrad, xgrad);
        convertScaleAbs(ygrad, ygrad);
        imshow("xgrad", xgrad);
        imshow("ygrad", ygrad);
    
        waitKey(0);
        return 0;
    }
  • 相关阅读:
    halcon 如何把一个region截取出来保存为图像
    Halcon学习(三)赋值与数组操作
    sort_region——对区域进行排序
    Halcon函数【转】
    Halcon算子之shape_trans,用于变换区域的形状
    Halcon学习之八:图像区域叠加与绘制
    Halcon学习之七:改变图像的现实方式和大小
    Halcon学习之六:获取Image图像中Region区域的特征参数
    Halcon学习之五:有关图像的定义域的函数
    Docker Swarm redis 集群搭建
  • 原文地址:https://www.cnblogs.com/osbreak/p/11466623.html
Copyright © 2020-2023  润新知