10

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

向正确的方向轻推一点将不胜感激。

4

5 回答 5

4

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

于 2012-10-15T19:10:04.843 回答
3

试试repa库。这里还有一个小教程

于 2012-10-15T18:52:31.143 回答
3

我过去曾为此使用过repa-devil包。它允许您使用 Developer's Image Library (DevIL) 处理多种格式。您可以读取和写入您可能关心的所有格式。

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

于 2012-10-15T19:09:25.557 回答
1

这是一个新的Haskell 图像处理库,它使用 JuicyPixels 进行编码,为您提供了以非常简单的方式读取和写入所有支持的格式并以您可以想象的任何方式操作它们的接口。就像一个简单的例子说明它是多么容易:

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

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

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

于 2016-04-17T08:24:02.857 回答
0
  1. GTK 支持加载和保存 JPEG 和 PNG。[AFAIK,虽然没有其他格式。] 有一个 Haskell 绑定,名为Gtk2hs. 它很好地支持矢量图形,但虽然支持位图图形,但并不特别容易弄清楚。所以我写了AC-EasyRaster-GTK,它将 GTK 包装在一个更友好的界面中。(但它仍然需要Gtk2hs。)唯一真正Gtk2h的缺点是在 Windows 上设置有点繁琐。(而且安装一个完整的 GUI 工具包只是为了加载和保存图像文件可以说是矫枉过正。)

  2. 我收集的“GD”库支持编写多种图像格式,并且非常小而简单。我相信 Hackage 也有用于 GD 的 Haskell 绑定。我没有亲自尝试过。

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

于 2012-10-15T19:07:01.597 回答