【问题标题】:Viewing source code of a jpg or bmp image查看 jpg 或 bmp 图像的源代码
【发布时间】:2023-12-26 14:18:01
【问题描述】:

我正在尝试找到一种方法来从图像中的每个像素中提取 rgb 值。如果我有一个 3x3 图像,我想要得到的输出是这样的:

{
   "0-0": [125,222,0],
   "0-1": [125,222,0],
   "0-2": [125,222,0],
   "1-0": [125,222,0],
   "1-1": [125,222,0],
   "1-2": [125,222,0],
   "2-0": [125,222,0],
   "2-1": [125,222,0],
   "2-2": [125,222,0]
}

我知道这是一个有点模糊的问题,很可能会被标记,但我会扔在那里。

感谢和欢呼

【问题讨论】:

  • 您打算使用哪种库/编程语言?
  • 你说的太模糊/宽泛/不清楚,所以暂时关闭。添加诸如什么语言/操作系统/gfx lib之类的细节?数组通常也不由字符串索引。有很多方法可以做到这一点 1. 使用第 3 方库 2. 编写自己的解码器 3. 使用编译器/IDE/OS 平台的内置函数。如果你想编写自己的解码器,那么 JPEG 对于新手来说编码有点太多,而 BMP 有太多的变化,所以我只会解码 BMP 的特定格式(比如解压的 24 位 RGBA 或其他任何格式)并转换你需要的任何图像到这种格式。
  • 看看这个 opening image file on c++ , PNG , JPEG 它是和 VCL/C++ 示例,使用 #1、#2 加载多种图像类型以及用于 PCX 解码的当前代码,这样您就可以看到它的样子.. . 对于 PNG 使用 LIBPNG,对于 BMP、JPEG 编译器/IDE 内置函数,其余的都有我自己的解码器(示例中只有 PCX 代码)
  • @Spektre 无需对图像加载进行编码。您可以使用 Python PIL / C++ stb_image / OpenCV / Matlab 或其他任何东西......然后扫描图像并产生该输出相当简单。这仅取决于 OP 使用的库/语言。
  • @Miki 代码比 Python PIL 有点旧 .. 无论如何,由于兼容性、立法、性能和其他原因,第 3 方库并不总是一种选择(比如解码编码中的错误很好的例子是GIF ...在过去是立法问题,现在大多数解码器都有问题...)。

标签: image-processing bitmap jpeg bmp


【解决方案1】:

实际上做起来很简单(但也很难)。您需要为您感兴趣的每种图像格式获取一个解码器。然后您需要对图像进行解码。然后需要打印出解码器返回的像素值。

在许多情况下,您可以直接从保存在 BMP 文件中的数据执行此操作。但是,来 BMP 文件是 RLE 编码的,这使得这不可能。

【讨论】:

    最近更新 更多