2016-10-10 35 views
0

BufferedImageをOpenCVで使用されるMatに変換しようとしています。BufferedImageをOpenCvに変換するMat

(stackoverflowのを含む多くの異なるサイト、上の)私はこの見つかりコードは次のとおりです。

DataBufferTypeを型に解決することはできません。

public Mat bufferedImageToMat(BufferedImage bi) { 
     Mat mat = new Mat(bi.getHeight(), bi.getWidth(), CvType.CV_8UC3); 
     byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); 
     mat.put(0, 0, data); 
     return mat; 
    } 

Eclipseは私に、次のエラーが発生します。

私はjava.awt.image.BufferedImageをインポートしました。これは問題ではありません。

アイデア? この変換を行う別の方法ですか?

+0

BufferedImageのになってしまったものです。それが 'BufferedImage.TYPE_INT_RGB'であるか、それが別の型を持っているかどうかをチェックしてください... –

答えて

0

これは私が型を持っている

public Mat bufferedImageToMat(BufferedImage bi) { 
    Mat mat = new Mat(bi.getHeight(), bi.getWidth(), CV_8UC(3)); 

    int r, g, b; 
    UByteRawIndexer indexer = mat.createIndexer(); 
    for (int y = 0; y < bi.getHeight(); y++) { 
     for (int x = 0; x < bi.getWidth(); x++) { 
      int rgb = bi.getRGB(x, y); 

      r = (byte) ((rgb >> 0) & 0xFF); 
      g = (byte) ((rgb >> 8) & 0xFF); 
      b = (byte) ((rgb >> 16) & 0xFF); 

      indexer.put(y, x, 0, r); 
      indexer.put(y, x, 1, g); 
      indexer.put(y, x, 2, b); 
     } 
    } 
    indexer.release(); 
    return mat; 
} 
関連する問題