在Java中从照相机接收图像时的瑕疵

在Java中从照相机接收图像时的瑕疵,java,image,camera,artifacts,Java,Image,Camera,Artifacts,大家好,奇怪的问题。我的公司有一个来自另一家公司的应用程序,它记录了通过以太网连接的摄像头拍摄的图像。他们的应用程序是用C++编写的,我一直试图用java来转换/破解它。 我可以接收图像,但质量不一样。上面的照片来自他们的应用程序,下面的照片来自我的: 知道为什么这些工件会出现在我用Java编写的应用程序版本中吗?BMP和JPG图像都会出现这种情况 它的工作方式是通过套接字(C++和java版本)…发送一个命令以捕获图像,相机通过发送数据(字节)进行响应。我保存一个字节数组,然后从中创建一个

大家好,奇怪的问题。我的公司有一个来自另一家公司的应用程序,它记录了通过以太网连接的摄像头拍摄的图像。他们的应用程序是用C++编写的,我一直试图用java来转换/破解它。 我可以接收图像,但质量不一样。上面的照片来自他们的应用程序,下面的照片来自我的:

知道为什么这些工件会出现在我用Java编写的应用程序版本中吗?BMP和JPG图像都会出现这种情况

<>它的工作方式是通过套接字(C++和java版本)…发送一个命令以捕获图像,相机通过发送数据(字节)进行响应。我保存一个字节数组,然后从中创建一个新的BuffereImage:

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

感谢您的输入或想法。

这看起来像是调色板问题,即单个像素的数值保持不变,但将这些值映射到实际RGB值的表格可能会出错(实际上,查看特定图片,甚至可能是源是BW,而您的是颜色)。我的猜测是,传输不是问题所在。如果您愿意,尝试发送一个已知的bytestring来确认,但我会进一步关注图像编码

这可能是数据类型问题吗?数据格式是什么?(内特、短裤、未签名短裤?

Hmm。。。在C++版本中,图像被保存到一个无符号字符数组中。在Java中,我将它读入一个字符串中,并在逐行读取数据时连接该字符串(以检查相机发送的数据结束标志)。在我将其读入字符串后,我将字符串转换为字节。也许这就是问题所在?实际上可能有很多意义。注意Java字节类型是有符号的!将其读入字符串,然后执行.getBytes()与将其逐int读入byte[]数组(使用强制转换)不同。现在可以了!这个回答让我反复检查和调查。