【问题标题】:C++ library to convert JPEG/PNG images to RAW image format [closed]用于将 JPEG/PNG 图像转换为 RAW 图像格式的 C++ 库 [关闭]
【发布时间】:2020-11-18 15:43:45
【问题描述】:

我曾尝试搜索将 JPEG 和 PNG 转换为 RAW 图像格式(*.raw 格式)的一天,但找不到任何结果,所有结果都是 RAW 到 JPEG/PNG。最后我决定在这里问,希望能得到答案。

所以,我只想将 JPEG 和 PNG 格式的图像转换为 RAW 图像格式 (*.raw),为此我需要可以完成这项工作的 C++ 库。此外,如果您可以建议一些逐步的过程来使用 C++ 实现它将会很有帮助。因为我没有这方面的经验,也没有开始。

请指导我。非常感谢您的帮助。

谢谢

【问题讨论】:

  • 为什么要投反对票?它有什么问题吗?我尝试了很长时间,可以找到解决方案然后我在这里问。
  • 关于您的问题的答案并不多。你说的很对。但是您可以分两步思考,我想您可能会找到答案:首先解压缩图像,然后将其存储为原始图像(无论您这样做的原因是什么)。看这个,例如:stackoverflow.com/questions/27477441/…
  • 请注意,要求我们推荐或查找工具、软件库等的问题与 Stack Overflow 无关。请浏览help for asking questions,尤其是What topics can I ask about here?,看看你能问什么。投反对票的不是我,但这可能是你得到它的原因)
  • @FluffyKitten,我同意,但为什么我问这个问题,因为我在互联网上搜索了一整天,包括 SO,但可以找到任何图书馆,我已经筋疲力尽了。最后,我决定在这里询问是否可以获得任何信息,因为肯定有人拥有这方面的专业知识或使用过它。为什么我要图书馆,因为我的时间很短,需要在项目中使用这个图书馆。现在,在马文的指导下,如果能得到我想要的,我正在朝这个方向努力。 .顺便说一句,我会遵守社区准则。
  • 谢谢@Marvin,我正朝着这个方向前进,希望能得到解决方案。同时,如果可以通过这个 SO 答案photo.stackexchange.com/questions/1455/what-is-raw-technically/… 并告诉我在您建议的答案之后从 JPEG 转换为 RAW 格式的步骤。顺便说一句,我正在调查它。谢谢

标签: c++11 png jpeg image-conversion raw


【解决方案1】:

“原始”不是一个定义明确的格式。

根据您与谁交谈,这可能意味着制造商专有的未处理格式,例如:

  • 尼康的 NEF 格式或
  • 佳能的 CR2 格式或
  • Adobe 的 DNG 格式

几乎没有软件支持编写此类文件。 dcrawufraw 支持阅读。

或者它可能意味着没有标题或大小信息的直接 RGB888 字节。许多库都支持这一点:

  • CImg 可能是最简单的 - link
  • OpenCV 可以做到
  • ImageMagick Magick++ 可以做到
  • libvips可以的

您不需要实际编写任何 C/C++ 来将 JPEG/PNG 转换为原始 RGB 字节,您只需在命令行中使用 ImageMagick

magick input.png -depth 8 RGB:result.raw

【讨论】:

  • 感谢@Mark Setchell 的宝贵回复。我必须将转换后的 RAW 图像文件传递给 SDK API,它接受 *.RAW 图像格式进行一些处理。那么,可以转换吗?
  • 上面来自 Mark Setchell 的原始文件只是一串字节数据。您必须告诉阅读软件图像的宽度、高度和深度才能正确阅读。您需要查看您的 SDK API 需要哪些信息才能接受 RAW 图像。
  • @Aasim 我不知道。正如我所说,RAW 格式没有很好的定义。您需要检查您的 SDK 或其供应商,了解它们的含义。
  • @MarkSetchell,你能看到this question,旋转JPEG图像吗?
【解决方案2】:

从技术上讲,您不能将 JPEG/PNG 转换为 RAW 图像。因为 RAW 图像包含从相机捕获的大量数据。 JPEG 图像是压缩的图像格式,其中大部分信息被窃取。因此,您不能编写程序来篡改数据并恢复原始 RAW 图像。 (即使你写了一个程序,生成的 RAW 文件并不等同于最初捕获的 RAW 文件)

【讨论】:

  • 感谢@hasi90 的回复。如果我丢失一些信息也没关系,很明显我们无法将所有内容从 JPEG/PNG 恢复为 RAW。那么,C++ 中有什么库可以做到吗?
  • 此外,在 JPEG/PNG 信息中,与 RAW 格式相比,压缩以减小尺寸(JPEG 是有损的,而 PNG 是松散的)。但是在转换为 RAW 时,我们可以解压缩 JPEG/PNG 并将其转换为 RAW。而在这个过程中,我们绝对无法检索到他们的原始 RAW 副本,而是那些信息比原始 RAW 副本少的那个。那么,它是如何实现的,有没有可用的 C++ 库呢?
猜你喜欢
  • 2019-10-28
  • 1970-01-01
  • 2011-10-28
  • 2021-08-21
  • 2015-10-18
  • 2010-11-19
  • 2017-08-27
  • 2016-04-06
  • 1970-01-01
相关资源
最近更新 更多