2

バッファリングされた画像をマトリックスに変換しようとしていますが、これまでに見たことのない UnsupportedOperationException がスローされます。

public static Mat readMatImage(String path) {
    Mat mat = null;
    BufferedImage image;
    try {
        image = ImageIO.read(new FileInputStream(path));
        mat = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC3);
        byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
        System.out.println(data[data.length - 1]);
        mat.put(0, 0, data);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return mat;
}
Exception in thread "main" java.lang.UnsupportedOperationException: Provided data element number (4000000) should be multiple of the Mat channels count (3)   
4

1 に答える 1

0

画像をマット要素にキャストするには、画像が単一チャネルで8ビットでなければならないため、読み取り画像タイプを考慮する必要があると思います。イメージが RGB の場合は、バイナリ イメージに変換してみてください。

于 2016-04-13T09:18:13.903 に答える