使用Haskell检索图像的像素值

时间:2012-10-15 18:32:10

标签: haskell image-processing libraries image-recognition

是否有可用的方法或库可以加载图像(jpeg,png等)并将该图像的像素值分配到列表或矩阵中?我想用图像和模式识别做一些实验。

赞赏正确的方向。

5 个答案:

答案 0 :(得分:4)

您可以使用JuicyPixels,一个用于图像加载的本机Haskell库。这也很容易转换为REPA(手动或使用JuicyPixesl-repa)。

答案 1 :(得分:3)

试用repa库 。还有一个小教程here

答案 2 :(得分:3)

我过去曾使用repa-devil包。它允许您使用Developer的图像库(DevIL)处理大量格式。您可以阅读和编写您可能关心的所有格式。

实际图像数据以Repa数组的形式给出。这是一个很棒的数组运算库,可以很容易地编写并行代码。

答案 3 :(得分:0)

  1. GTK支持加载和保存JPEG和PNG。 [AFAIK,但没有其他格式。]有一个名为Gtk2hs的Haskell绑定。它非常支持 vector 图形,但是支持的位图图形并不是特别容易理解。所以我写了AC-EasyRaster-GTK,它将GTK包装在一个更友好的界面中。 (它仍然需要Gtk2hs。)唯一真正的缺点是Gtk2h在Windows上设置有点繁琐。 (安装整个GUI工具包只是为了加载和保存图像文件,这可能有点过分了。)

  2. 我收集“GD”库支持编写多种图像格式,并且非常小巧。我相信Hackage也有针对GD的Haskell绑定。我个人没试过。

  3. 有一种名为PPM的文件格式,它被故意设计为非常容易实现(它是一个很小的标题,然后是一个像素数组),因此在Hackage上至少有十几个包实现它(包括我自己的AC-PPM)。还有很多程序可以用这种格式显示和/或转换图像。

答案 4 :(得分:0)

这是一个新的Haskell Image Processing library,它使用JuicyPixels进行编码,为您提供了以非常简单的方式读取和编写所有支持格式的界面,并以您能想象的任何方式对其进行操作。就像一个简单的例子一样简单:

>>> img <- readImageRGB "image.jpg"
>>> writeImage "image90.png" $ rotate90 img

上面将读取RGB色彩空间中的JPG图像,顺时针旋转90度并将其保存为PNG图像。

哦,是的,它也可以使用Repa,所以你也可以免费获得并行处理。