2012-04-17 17 views
1

Arduino UNO R3Video Experimenter Shieldの画像に戻します。私はArduinoから、Video Experimenter Shieldの助けを借りて、防犯カメラから捕捉された画像のpollserial communicationバイトを得ています。私はArduinoからバイトを取得し、ByteArrayListを0と1のモノクロ画像に変換するためにJavaでそのコードを構築しました。Arduinoからバイト単位で画像を取得し、Javaで

javaプログラムは、arduinoから利用可能なデータを一度に収集していないため、OUTPUT_BUFFER_EMPTYの場合、このバイトのスタックをイメージにします。しかし、Arduinoから受け取ったバイトを何度もバイトチャンクに保存し続けます。

+0

* "何か提案がありますか?" * 1)コードだけでなく入出力にもコードフォーマットを使用してください。 2) 'System.err.println(e.toString());'を 'e.printStackTrace();'とスワップする3)BMPとして保存しないでください(PNGまたはJPGを使用してください)。 –

+0

私が取り出そうとしている画像は、0と1で構成された白黒画像の白黒です。ちょうど提案2と3で終わったが、最初のものが何を意味するのか分からない。とにかく結果は変わりません。ありがとう – Zuss

+0

* "とにかく結果は同じです" *出力はされません。 *「最初のものが何を意味するのか理解できません」*あなたが理解できないことが分かっていると思いますか?具体的にしてください。あなたが理解していない私の10っの声明はどうでしたか? –

答えて

2

シリアルポートからすべてのデータを読み取っていないと思われます。使用可能なバイト数をチェックし、それをバッファに読み込みますが、イメージ全体ではない可能性があります。したがって、ImageIO.readに電話するとnullが返されます。

これを行う方法の詳細については、this questionの回答を参照してください。

documentationImageIO.readには、画像データに登録済みのImageReaderがない場合はnullが返されます。使用している画像形式がサポートされていない可能性があります。

ImageIO supports a minimum of JPEG, PNG, BMP, WBMP and GIFの実装です。あなたの説明から、これらのフォーマットのいずれかを使用しているようには聞こえません。

+0

結果イメージは128x96解像度のモノクロビットマップイメージで、サイズは1536バイトです。編集した投稿を確認してください。 – Zuss

0

arduinoが遅すぎます。そのため、コミュニケーションシャネルを開けて少し待つ必要があります。 arduinoに準備する時間がなく、データを失う場合があります。

RXTX Javaライブラリと例コードとコメントは、http://arduino.cc/playground/Interfacing/Javaで確認してください。