0

多くの形式の画像をOCRするJavaプログラムを作成しようとしています。イメージのバイトはネットワーク経由で送信されるため、イメージをファイルから直接読み取ることはできません。

現在、ImageIO を使用して画像ピクセルの raw バイトを読み取ることができます。ただし、ImageMagick でサポートされているすべての形式をサポートしたいので、JMagick を使用して画像を読み取り、生のバイトを Tess4J に渡します。これにどのようにアプローチすればよいかわかりません。私はこの関数が私にバイトを与えることができることを発見しました:

PixelPacket[] MagickImage.getColormap();

ただし、取得した PixelPacket オブジェクトを連続したバイトに変換するための特別なメソッドを作成する必要があります。私はそれを行うことができますが、おそらくこれを行うより良い方法はありますか?たとえば、次の方法で使用できる非常に生のファイル形式 ( http://en.wikipedia.org/wiki/BMP_file_format#mediaviewer/File:BMPfileFormat.pngよりもさらに多い) があるかもしれません。

byte[] imageToBlob(ImageInfo imageInfo) ?

オブジェクトはこの生の形式を指す必要があり、配列imageInfoからピクセル情報を切り取ることができます。bytes

これは適切な方法ですか、それとももっと単純な (より高速で堅牢な) ものを使用する必要がありますか?

編集

私が念頭に置いていた形式はPNMと呼ばれていることがわかりました。

4

1 に答える 1

1

JMagickを使用している場合、メソッドを使用するdispatchImageことがあなたが探しているものだと思います。画像の生のピクセルに直接アクセスできます。ファイル形式は必要ありません。

例については私のMagickUtil クラスを参照するか、必要に応じてそのクラスを使用してください。

また、JMagick がサポートする多くの同じフォーマット用の純粋な Java ImageIO プラグインも作成しました。これは役に立つかもしれません。それらは私のGitHub リポジトリにあります。

于 2014-11-07T21:20:19.380 に答える