OpenCV将Python代码转换为Java

OpenCV将Python代码转换为Java,java,python,opencv,Java,Python,Opencv,我有以下Python代码: ret,thresh = cv2.threshold(gray,5,255,cv2.THRESH_TOZERO) kernel1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(11,11)) kernel2 = np.ones((3,3),np.uint8) erosion = cv2.erode(thresh,kernel2,iterations = 1) dilation = cv2.dilate(erosion,k

我有以下Python代码:

ret,thresh = cv2.threshold(gray,5,255,cv2.THRESH_TOZERO)
kernel1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(11,11))
kernel2 = np.ones((3,3),np.uint8)
erosion = cv2.erode(thresh,kernel2,iterations = 1)
dilation = cv2.dilate(erosion,kernel1,iterations = 7)
我正在尝试将其转换为Java。这是我当前的版本:

double thresh = Imgproc.threshold(gray, gray, 5, 255, Imgproc.THRESH_TOZERO);
Mat kernel1 = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, new Size(11, 11));
Mat kernel2 = Mat.ones(3, 3, CvType.CV_8U);
Mat erosion = new Mat();
Imgproc.erode(gray, erosion, kernel2);
Mat dilation = new Mat();
Imgproc.dilate(erosion, dilation, kernel1);
现在我找不到一个应该应用
thresh
参数的地方,而且我也没有使用
iterations
参数来使用
Imgproc.crease
Imgproc.deflate
方法,因为在这种情况下,方法签名还需要额外的
点锚
参数,而我没有现在

如何正确地将此代码转换为Java

已更新

我做以下翻译:

Mat erosion = new Mat();
Imgproc.erode(gray, erosion, kernel2, new Point(), 1);
Mat dilation = new Mat();
Imgproc.dilate(erosion, dilation, kernel1, new Point(), 7);

看起来它像预期的那样工作,但我不确定这是正确的翻译吗?

以下是
C++/Python/Java
中的
explate
声明:

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, 
        Point anchor=Point(-1,-1),
        int iterations=1,
        int borderType=BORDER_CONSTANT,
        const Scalar& borderValue=morphologyDefaultBorderValue() )

Python: cv2.dilate(src, kernel[, dst
            [, anchor[, iterations[, borderType[, borderValue]]]]]) → dst

Java: static void dilate(Mat src, Mat dst, Mat kernel, Point anchor, int iterations)
因为如果要使用param
iterations
,则没有锚定的默认值。因此,通过
新点(-1,-1)
是更好的选择

Imgproc.dilate(src, dst, kernel, new Point(-1,-1), iterations);