• Java Opencv 实现锐化


    § Laplacian()
    void cv::Laplacian    (    InputArray     src,
                                           OutputArray     dst,
                                           int     ddepth,
                                           int     ksize = 1,
                                           double     scale = 1,
                                           double     delta = 0,
                                           int     borderType = BORDER_DEFAULT
                                    )

    参数:

    src            源图片
    dst            与src相同大小和相同通道数的目标图像。
    ddepth        目标图像的所需深度。
    ksize        用于计算二阶导数滤波器的孔径大小。有关详细信息,请参阅getDerivKernels。大小必须是正面和奇数。
    scale        计算的拉普拉斯算子值的可选比例因子。默认情况下,不应用缩放。有关详细信息,请参阅getDerivKernels。
    delta        在将结果存储在dst之前添加到结果中的可选增量值。
    borderType    像素外推方法,请参阅cv :: BorderTypes

    计算图像的拉普拉斯算子。

    该函数通过将使用Sobel运算符计算的第二个x和y导数相加来计算源图像的拉普拉斯算子:


    上式在ksize>1时。

    如果ksize==1,拉普拉斯算子是



    package com.gitee.dgw.lesson8;
    
    import com.gitee.dgw.lesson1.platformUtils;
    import org.bytedeco.javacpp.opencv_core;
    import org.opencv.core.Core;
    import org.opencv.core.Mat;
    import org.opencv.core.Size;
    import org.opencv.core.Point;
    import org.opencv.highgui.HighGui;
    import org.opencv.imgcodecs.Imgcodecs;
    import org.opencv.imgproc.Imgproc;
    
    import static org.opencv.core.Core.BORDER_DEFAULT;
    import static org.opencv.core.CvType.CV_16S;
    import static org.opencv.core.CvType.CV_8UC3;
    import static org.opencv.imgproc.Imgproc.COLOR_BGR2GRAY;
    
    /**
     * @program: learn-opencv
     * @description:
     * @author: Mr.Dai
     * @create: 2020-03-10 20:36
     **/
    public class Laplacian {
    
        private final  static String path=System.getProperty("user.dir")+"\catton.jpg";
        /// 全局变量
        private final  static  int scale = 1;
        private final  static int delta = 0;
        private final  static int ddepth = CV_16S;
        // 锐化度数
        private final  static int kernel_size = 3;
    
        static{
            platformUtils.loadLibraries();
        }
    
        public static void main(String[] args) {
            Mat src = new Mat();
            Mat src_gray=new Mat();
            Mat dst=new Mat();
            //读取一张图片
            //image=Imgcodecs.imread(path);
    
            //读取一张灰度图片
            src= Imgcodecs.imread(path,Imgcodecs.IMREAD_COLOR);
    
            if (src.empty()) {
                System.err.println("加载图片出错,请检查图片路径!");
                return;
            }
    
            Imgproc.GaussianBlur(src, src, new Size(3, 3), 0, 0, BORDER_DEFAULT);
    
            Imgproc.cvtColor(src, src_gray, COLOR_BGR2GRAY);
    
            Mat abs_dst=new Mat();
            //![laplacian]
            Imgproc.Laplacian(src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT);
            //![laplacian]
    
            //![convert]
            Core.convertScaleAbs(dst, abs_dst);
    
            HighGui.imshow("dstimg showimg",src);
            HighGui.imshow("srcimage showimg",abs_dst);
            // 无限等待按键按下
            HighGui.waitKey(0);
    
        }
    }


    image

  • 相关阅读:
    apk获取后台源代码
    Oracle用其中一个表的数据更新另一个表
    As的LogCat打开方法
    任意东西转Json
    将一个实体中相同字段的值赋值给另一个实体
    request乱码,又不能改request本身编码格式时可以进行转码
    oracle触发器
    搭建AS时各种报错解决方法(32位AMD)
    计算两个时间之间相差了多少时间
    thinkphp支持query查询
  • 原文地址:https://www.cnblogs.com/dgwblog/p/12458532.html
Copyright © 2020-2023  润新知