1
この機能を使用してBufferedImageをMatに変換しようとすると、BufferedImageをOpenCVのMatに変換する
public Mat matify(BufferedImage im) {
// Convert INT to BYTE
//im = new BufferedImage(im.getWidth(), im.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
// Convert bufferedimage to byte array
byte[] pixels = ((DataBufferByte) im.getRaster().getDataBuffer())
.getData();
// Create a Matrix the same size of image
Mat image = new Mat(im.getHeight(), im.getWidth(), CvType.CV_8UC3);
// Fill Matrix with image values
image.put(0, 0, pixels);
return image;
}
このエラーが発生します。
Exception in thread "main" java.lang.UnsupportedOperationException: Provided data element number (7955216) should be multiple of the Mat channels count (3)
at org.opencv.core.Mat.put(Mat.java:2549)
at Main.matify(Main.java:78)
at Main.doOpenCV(Main.java:48)
at Main.main(Main.java:40)
エラーは、このラインによって
image.put(0,0、画素)に起因します。
なぜこのエラーが発生していますか? JavaでBufferedImageをopencv Matに変換するにはどうすればよいですか?
を働いたものです。あなたの場合、どのタイプの 'im 'が不明です。 – reden
私も同じエラーに直面しています。あなたはこれの解決策を得たのですか? –