【问题标题】:How can I open and parse a png pixel by pixel?如何逐像素打开和解析 png?
【发布时间】:2017-05-01 20:56:10
【问题描述】:

我只是想知道如何遍历图像的每个像素?我知道我可以像打开其他文件一样打开该文件,但它不是“可读”格式。

例如,假设我有:world.png (1920/1080)

如何在两个 for 循环中解析它?

【问题讨论】:

  • 你看过opencv吗?
  • 好吧,我实际上“需要”自己遍历它。我知道 opencv 是一种选择,但我正在尝试将native c++ 应用程序与用 CUDA 编写的应用程序进行基准测试。所以,我实际上只是想知道如何以可读的格式打开它。 @JasonMc92 整个网站上的每一个答案都可以在谷歌搜索中找到足够的时间。这是一个网站dedicated 编程帮助...
  • @Kris,我知道。我在这里已经有一段时间了。 :) 用我自己的话来说,我的信息只是好的 StackOverflow 问题的典型规则。我更喜欢对所有事情进行近距离投票,就像某些人的风格一样。
  • 您的图像是彩色还是灰度?您使用的是什么操作系统?
  • 如果你想让自己的生活更轻松,我建议stackoverflow.com/a/24599122/2836621 ...或... stackoverflow.com/a/22374310/2836621

标签: c++ image


【解决方案1】:

您应该使用库来实现您想要的。在这种情况下,库是libpng。参见手册“阅读”部分:http://www.libpng.org/pub/png/libpng-manual.txt

正如@Ben 在 cmets 中所指出的,还有一个 C++ 包装器:http://www.nongnu.org/pngpp/doc/0.2.7/

【讨论】:

  • 必须?图书馆是由什么组成的?仙尘?
  • 这是一个很好的编程规则:“不要重新发明轮子”。编写一个兼容的 PNG 阅读器不是您在几个工作日内完成的事情。无论如何:如果您愿意,我将“必须”替换为“应该”。
  • 嘿,我有点迂腐,但为了 OP 的利益......规则更现实的是“不要重新发明相同的轮子”。从其他人那里获得自行车车轮设计,但如果您要制造飞行汽车,您可能需要重新发明车轮来处理着陆。 ^,^ 也就是说,我同意这是自行车车轮场景之一。
  • @JasonMc92 我完全不同意你对 OP 的建议。我无法想象在这种情况下“飞行汽车”会是什么。
  • 这是关于“不要重新发明”逻辑的一般规则,而不是特定于解析 PNG。我正在谈论的一个例子是我公司的一个项目,我们需要 SVG 解析器的特定行为和性能。现有的库都没有它,所以我们正在编写自己的库(尽管我们正在为 XML 使用 Xerces)。如果图书馆完全满足一个人的需求,请使用它。如果它主要满足一个人的需求,请贡献并使用它。如果没有,请编写您自己的(通常被错误标记为“重新发明”的操作)。这就是我要说的。
猜你喜欢
  • 2018-04-09
  • 2016-05-18
  • 2017-04-16
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
相关资源
最近更新 更多