0

みなさん、変な質問です。私の会社には、イーサネット経由で接続されたカメラで撮影した画像を記録する別の会社のアプリケーションがあります。彼らのアプリは C++ で書かれており、Java を使用して変換/ハッキングしようとしています。

画像を受信できますが、品質は同じではありません。上の写真は彼らのアプリから、下の写真は私のものです。

代替テキスト

代替テキスト

これらのアーティファクトが、Java で記述された私のバージョンのアプリに表示される理由は何ですか? BMP 画像と JPG 画像の両方で発生します。

それが機能する方法は、ソケット (C++ バージョンと Java バージョンの両方) を介するだけです... コマンドが送信されて画像をキャプチャすると、カメラはデータ (バイト) を送信することで応答します。バイト配列を保存し、それらから新しい BufferedImage を作成します。

// Create buffered image from bytes
image = ImageIO.read(new ByteArrayInputStream(imageBytes));

ご意見やアイデアをお寄せいただきありがとうございます。

4

2 に答える 2

1

これはパレットの問題のように見えます。つまり、個々のピクセルの数値は同じままですが、それらの値を実際の RGB 値にマッピングするテーブルがめちゃくちゃになる可能性があります (実際、特定の画像を見ると、ソースが白黒で、あなたのものは色です)。私の推測では、トランスミッションは問題ではありません。必要に応じて、既知のバイト文字列を送信して確認してみてください。ただし、画像のエンコードにさらに集中します。

于 2010-08-27T13:58:52.067 に答える
1

データ型の問題でしょうか?データ形式は何ですか?(int、short、unsigned short?)

于 2010-08-27T14:01:06.727 に答える