1. 程式人生 > >Java Opencv 實現銳化

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);

    }
}