0
画像はグレースケールにカバーされますが、BufferedImage.TYPE_3BYTE_BGR
のために3つのタイルに表示されます。openCVをグレースケール画像に変換する
.TYPE_BYTE_GRAYは機能しません。
グレースケールイメージを1つだけ表示するにはどうすればよいですか?
public void matToBufferedImage(Mat matRGB){
Mat mGray = new Mat();
Imgproc.cvtColor(matRGB, mGray, Imgproc.COLOR_BGR2GRAY);
int width = mGray.width(), height = mGray.height(), channels = mGray.channels();
byte[] source = new byte[width * height * channels];
mGray.get(0, 0, source);
image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
final byte[] target = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
System.arraycopy(source, 0, target, 0, source.length);
}
それはビデオキャプチャとの認識のためです。そのコードはそれでも動作するのでしょうか、それとも静止画像だけでしょうか? –
ビデオは画像の集まりに過ぎません。それが動作します。どうしてあなたは自分を見ないの? – Ultraviolet