繁体   English   中英

OpenCV 将 Python 代码转换为 Java

[英]OpenCV convert Python code to Java

我有以下 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参数的地方,而且我没有使用Imgproc.erodeImgproc.dilate方法的iterations参数,因为在这种情况下的方法签名还需要额外的Point anchor参数,我现在没有。

如何正确地将此代码转换为 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);

看起来它按预期工作,但我不确定new Point()是否正确翻译?

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

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)

因为如果要使用参数iterations ,则anchor没有默认值。 所以 pass new Point(-1,-1)是更好的选择。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM