我正在尝试使用 AdaptiveThreshold 方法对 RGB 图像进行二值化。我的代码如下:
public byte[] filter(byte[] buff, int width, int height) {
Mat img_rgb = new Mat(width, height, CvType.CV_8UC3);
Mat img_gray = new Mat(width, height, CvType.CV_8U);
Mat img_bin = new Mat(width, height, CvType.CV_8U);
img_rgb.put(0, 0, buff);
Imgproc.cvtColor(img_rgb, img_gray, Imgproc.COLOR_RGB2GRAY);
Imgproc.adaptiveThreshold(img_gray, img_bin, 255,
Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 5, 2);
int size = (int) img_bin.total() * img_bin.channels();
byte[] bin_buff = new byte[size];
img_bin.get(0, 0, bin_buff);
return bin_buff;
}
应用adaptiveThreshold后数据的最大值img_bin
应该是255,但它是-1。为什么会这样?我是 OpenCV 的新手,我找不到任何解释。
提前致谢。