基本上,我正在尝试学习如何在没有库的情况下手动打开图像并查看 RGB 内容。
我想这样做,以便计算 RGB 的色相和饱和度以写回二维阵列图像。
到目前为止我得到了这个:
#include <iostream>
#include <stdio.h> /* printf */
#include <math.h> /* acos */
#include <fstream> /* for file I/O */
using namespace std;
int main() {
FILE* fp = NULL;
fp = fopen("soccerball.png", "rb");
cout << "done" << endl;
return 0;
}
我知道这并不多,因为我更习惯使用 Python。但老实说,我不知道从哪里开始。而且在互联网上似乎根本没有这方面的例子。
所以我读了一张图片。现在我想要这样的东西:
img[Height][width]
所以我可以得到
img_r[h][w], img_g[h][w], img_b[h][w]
所以我可以使用这些值来计算相同格式的 Hue 二维数组。
img_hue[h][w]
谢谢
最佳答案
没有库就无法轻松打开 PNG 文件。
这是使用库打开 PNG 的示例...它已经有很多代码 http://zarb.org/~gc/html/libpng.html
问题是 PNG 是压缩格式。将 RGB 值压缩成特殊格式需要很多“数学魔法”。
.BMP(例如 Windows 位图)是您手动开始解析的一种非常简单的方法,如果您这样做是为了训练,但其他格式则需要一个库。
当然,您可以从头开始做所有事情...但是需要一段时间,而且根据您提出的问题,您离它还有一点距离。
关于c++ - 在 C++ 中从 PNG 中读取 RGB 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42150121/