【问题标题】:reconstructing a image from byte array in arduino在arduino中从字节数组重建图像
【发布时间】:2019-03-20 21:41:38
【问题描述】:

所以我需要将屏幕截图从 Unity 发送到 Arduino。我打开了一条通信线路,我可以在其中发送 X 大小的字节数组并在 Arduino 中接收它们。
我有两个问题:

我应该向 Arduino 发送什么类型的图像(转换为字节 []),我在想一个 tga 类型,但我知道 Arduino(我使用的是兆)有一个非常小的内存,并且可以解决这个问题。

其次,在 arduino 中重建图像时,我什至不知道从哪里开始。如何从字节数组到图像?

任何资源都会有所帮助,我只需要从某个地方开始。

【问题讨论】:

  • 你打算在 Arduino 上用它们做什么?即使是 Arduino Due 也只有 96 KB 的 RAM,Uno 有 2k。我认为您需要将它们缩小,并将它们转换为压缩的单色,以便有机会进行任何类型的处理。 TarGA 格式基本上是未压缩的每像素 3 字节,这将用大约 25x25 像素的图像填满所有 RAM。因此,如果您只处理 16x16 位图,也许这会起作用。
  • arduino 需要能够在屏幕上显示它。该技术据称将 AR hud 元素添加到图像中,我只需要获取图像即可。

标签: arrays image-processing arduino serial-port tga


【解决方案1】:

您可以在 arduino 上使用 upng 解码 png 数据。在统一中,任何纹理都可以使用 EncodeToPNG 编码为 png 字节数组。

https://github.com/elanthis/upng https://docs.unity3d.com/ScriptReference/ImageConversion.EncodeToPNG.html

如果传输速度不是问题,您可以以字节格式发送每个像素。使用 GetPixels32() 获取字节格式 (0-255) 的颜色数组,每像素 4 个字节 (RGBA)。

假设您想在 LCD 上显示图像,您可以使用 Adafruit_GFX 库将原始字节数组显示到 LCD。 http://learn.adafruit.com/adafruit-gfx-graphics-library

【讨论】:

  • 我是否可以将 EncodedToPGA 字节数组与其他字节数组一样发送?
  • 这对我来说听起来像是一个合理的解决方案 - 除了 RGBA,如果不使用它,发送额外的 alpha 通道是没有意义的。 arduino 串行链接可以非常快,但它不是 那么 快。此外,许多小型 LCD 显示器只有 16 位色深,因此如果在最终显示中看不到图像,那么在传输之前减少图像的色彩空间可能是值得的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多