zoukankan      html  css  js  c++  java
  • 【 imgproc 模块. 图像处理】Sobel导数

    主要步骤为:

    (1)高斯滤波降噪

    GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );

    (2)转换为灰度图

    cvtColor(src, src_gray, CV_RGB2GRAY);

    (3)求x方向上的梯度,并转化为 CV_8U

        //Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
        Sobel(src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT);
    convertScaleAbs(grad_x, abs_grad_x);

    (4)求y方向上的梯度,并转化为 CV_8U

        //Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
        Sobel(src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT);
        convertScaleAbs(grad_y, abs_grad_y);

    (5)合并梯度

    addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);

    openCV例程源代码:

    #include"stdafx.h"
    #include "opencv2/imgproc/imgproc.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #include <stdlib.h>
    #include <stdio.h>
    
    using namespace cv;
    
    /** @function main */
    int main(int argc, char** argv)
    {
    
        Mat src, src_gray;
        Mat grad;
        char* window_name = "Sobel Demo - Simple Edge Detector";
        int scale = 1;
        int delta = 0;
        int ddepth = CV_16S;
    
        int c;
    
        /// 装载图像
        src = imread("lena512color.tiff");
    
        if (!src.data)
        {
            return -1;
        }
    
        GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
    
        /// 转换为灰度图
        cvtColor(src, src_gray, CV_RGB2GRAY);
    
        /// 创建显示窗口
        namedWindow(window_name, CV_WINDOW_AUTOSIZE);
    
        /// 创建 grad_x 和 grad_y 矩阵
        Mat grad_x, grad_y;
        Mat abs_grad_x, abs_grad_y;
    
        /// 求 X方向梯度
        //Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
        Sobel(src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT);
        convertScaleAbs(grad_x, abs_grad_x);
    
        /// 求Y方向梯度
        //Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
        Sobel(src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT);
        convertScaleAbs(grad_y, abs_grad_y);
    
        /// 合并梯度(近似)
        addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);
    
        imshow(window_name, grad);
    
        waitKey(0);
    
        return 0;
    }


    One day,I will say "I did it"
  • 相关阅读:
    win10 访问远程文件夹 此共享需要过时的SMB1协议 你不能访问此共享文件夹
    Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user'
    MySQL 密码参数配置与修改 validate_password
    MySQL 命令行下更好的显示查询结果
    MySQL 数据库的存储结构
    MySQL实验 内连接优化order by+limit 以及添加索引再次改进
    MySQL实验 子查询优化双参数limit
    MySQL 索引结构 hash 有序数组
    MySQL 树形索引结构 B树 B+树
    hbase2.1.9 centos7 完全分布式 搭建随记
  • 原文地址:https://www.cnblogs.com/Vince-Wu/p/10115315.html
Copyright © 2011-2022 走看看