分水岭算法不';无法提供我期望的结果| Java | OpenCV

分水岭算法不';无法提供我期望的结果| Java | OpenCV,java,opencv,image-processing,watershed,Java,Opencv,Image Processing,Watershed,我试图在这张图片中找到凹坑的中心 我使用了分水岭算法,我认为该算法用于在图像上查找凹坑,但结果图像对我没有任何用处。我正确地使用了这个算法吗?我应该用另一种方式吗?这是我的密码: public static void main (String args[]){ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat image = new Mat(); image=Imgcodecs.imread("

我试图在这张图片中找到凹坑的中心

我使用了分水岭算法,我认为该算法用于在图像上查找凹坑,但结果图像对我没有任何用处。我正确地使用了这个算法吗?我应该用另一种方式吗?这是我的密码:

public static void main (String args[]){

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat image = new Mat();
        image=Imgcodecs.imread("cellar.jpg");

        if ( image == null) System.out.println("not working");
        else System.out.println("ok");

        Mat binaryImage = new Mat();
        Imgproc.cvtColor(image, binaryImage, Imgproc.COLOR_BGR2GRAY);
        Imgproc.threshold(binaryImage,binaryImage,0,255,Imgproc.THRESH_BINARY | Imgproc.THRESH_OTSU);

        Mat fg = new Mat(image.size(),CvType.CV_8U);
        Imgproc.erode(binaryImage,fg,new Mat(),new Point(-1,-1),2);

         Mat bg = new Mat(image.size(),CvType.CV_8U);
         Imgproc.dilate(binaryImage,bg,new Mat(),new Point(-1,-1),3);
         Imgproc.threshold(bg,bg,1, 128,Imgproc.THRESH_BINARY_INV);

         Mat markers = new Mat(image.size(),CvType.CV_8U, new Scalar(0));
         Core.add(fg, bg, markers);

         if(markers==null) System.out.println("ojojoj");
         else System.out.println("perfect");

         WatershedSegmenter segmenter = new WatershedSegmenter();
         segmenter.setMarkers(markers);
         Mat result = segmenter.process(image);

         Imgcodecs.imwrite("resultMat.png", result);
}        


public class WatershedSegmenter{
    public Mat markers;

    public void setMarkers(Mat markerImage)
    {
        markers = new Mat();
        markerImage.convertTo(markers, CvType.CV_32S);
    }

    public Mat process(Mat image)
    {
        Imgproc.watershed(image, markers);
        markers.convertTo(markers,CvType.CV_8U);
        return markers;
    }
}
以下是结果图像:


感谢您的帮助:)

您如何定义给定输入图像中的凹坑?我指的是类似于圆形的凹坑