如何在C中以像素级操作图像?

时间:2009-10-20 11:18:47

标签: c image-processing image-manipulation pixel

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

我尝试了旧方式:

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

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

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

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:3)

要操纵 jpeg 文件,请使用libjpeg tiff 文件使用libtiff等。

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

来自ImageMagick的

MagickWand是另一个不错的选择