7

如何在 C 中读取图像以便可以直接控制其像素(就像我们在 MATLAB 中所做的那样)?

我尝试了旧方法:

FILE *fp;
fp = fopen("C:\\a.tif","r");

这只是给了我ascii图像文件的形式(我认为)。

如何获得对图像的像素级控制并执行一些基本操作,例如反转图像?

4

5 回答 5

4

看看libtiff。几乎所有图像格式都有某种标题数据,并且许多图像格式都经过压缩以保持文件大小合理。您当然可以编写 C 代码来读取标头并执行解压缩,但没有必要,因为其他人已经这样做了。在此处查找一些 C 图像库。

另一个问题是您希望以何种形式处理数据——常见的选择是 24 位 RGB(即 R、G 和 B 的值从 0 到 255 不等)。在 MATLAB 中,您还可以看到 R、G、B 作为从 0.0 到 1.0 的双精度数。或者您可能需要不同的色彩空间(HSV、YUV 等)。

请记住,整数运算更快,但它们可能更麻烦。

于 2009-10-20T11:26:32.147 回答
4

OpenCV是计算机视觉库,但也可用于“低级”任务。它支持 BMP、DIB、JPEG、JPG、JPE、PNG、PBM、PGM、PPM、SR、RAS、TIFF、TIF。

于 2009-10-21T21:35:45.613 回答
3

要操作jpeg文件使用libjpegtiff文件使用libtiff等。

另一个简单的选项是gd,它允许处理多种图像格式(PNG、JPEG、GIF...)。

于 2009-10-20T11:29:31.193 回答
1

有一些开源库可以加载不同类型的图像,还有一些 libtiff 可以加载 tiff 图像。如果您只是想玩玩并且文件格式不是很重要,那么我会看看netpbm格式(特别是P5和P6)。为它编写一个加载器和保存器非常容易,当然也是一个很好的练习。

于 2009-10-20T11:30:46.200 回答
1

ImageMagick 的MagickWand是另一个不错的选择

于 2009-10-21T00:07:17.160 回答