AdaptiveThreshold メソッドを使用して RGB 画像を 2 値化しようとしています。私のコードは次のとおりです。
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;
}
img_bin
AdaptiveThreshold を適用した後のデータの最大値は255 である必要がありますが、代わりに -1 です。なぜこうなった?私はOpenCVが初めてで、説明が見つかりません。
前もって感謝します。