如何读取C中的图像,以便可以直接控制像素(就像我们在MATLAB中一样)?
我尝试了旧方式:
FILE *fp;
fp = fopen("C:\\a.tif","r");
它只是给了我ascii
形式的图像文件(我认为)。
如何对图像进行像素级控制并执行一些基本操作,例如反转图像?
答案 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)
答案 3 :(得分:1)
有一些开源库可以加载不同类型的图像,libtiff可以加载tiff图像。如果您只想玩游戏并且文件格式不是很重要,那么我会看一下netpbm格式(特别是P5和P6)。为它编写装载机和保护程序非常容易,当然也是一个很好的练习。
答案 4 :(得分:1)
MagickWand是另一个不错的选择