我试图将一些OpenCV python代码转换为Java,但遇到了在Java包装器中找到正确函数的问题。所讨论的python代码沿x轴计算Scharr梯度为:

# compute the Scharr gradient of the blackhat image and scale the
# result into the range [0, 255]
gradX = cv2.Sobel(blackhat, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=-1)
gradX = np.absolute(gradX)
(minVal, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")

[代码来自pyimagesearch网站-检测护照图像中的机器可读区域-博客文章]

我在Java中拥有的是:
Imgproc.Sobel(blackhat, gradX, CvType.CV_32F, 1, 0, -1, 1.0, 0, Core.BORDER_DEFAULT);
Core.convertScaleAbs(gradX, gradX);
Core.MinMaxLocResult minmax = Core.minMaxLoc(gradX);

这将输出与python代码的前三行相同的结果。但是我被困在最后一个。如何使用Java API将gradX缩放回[0..255]范围?

convertScaleAbs函数是否也执行与NumPys absolute相同的操作?

最佳答案

结合使用normalizenormType=NORM_MINMAX

10-07 22:24