是否有一种可用的方式或库可以加载图像(jpeg、png等)并将该图像的像素值分配到列表或矩阵中?我想进行一些关于图像和模式识别的实验。
希望能给出指引。
是否有一种可用的方式或库可以加载图像(jpeg、png等)并将该图像的像素值分配到列表或矩阵中?我想进行一些关于图像和模式识别的实验。
希望能给出指引。
您可以使用JuicyPixels,这是一个本地的Haskell库,用于图像加载。将其转换为REPA也非常容易(手动或使用JuicyPixels-repa)。
>>> img <- readImageRGB "image.jpg"
>>> writeImage "image90.png" $ rotate90 img
GTK支持加载和保存JPEG和PNG格式的图片。[据我所知,没有其他格式。]有一个名为Gtk2hs
的Haskell绑定。它非常好地支持了矢量图形,但是位图图形虽然也被支持,但不是特别容易理解。因此,我编写了AC-EasyRaster-GTK
,它在更友好的界面中包装了GTK。(尽管仍需要Gtk2hs
。)唯一的真正缺点是,在Windows上设置Gtk2h
有点棘手。(而且安装整个GUI工具包只是为了加载和保存图像文件可能有些过度杀伤力。)
我了解到,“GD”库支持写入多种图像格式,并且非常小巧简单。我相信Hackage也有Haskell绑定的GD。我个人没有尝试过这个。
有一种名为PPM的文件格式,它被故意设计得非常容易实现(只有一个小标题和一个像素数组),因此至少有十几个Hackage包实现了它(包括我的AC-PPM
)。还有很多程序可以显示和/或转换这种格式的图像。
func file = onImg someRepaFunction \
fmap` readImage file开始。使用这行代码,您只需要定义
someRepaFunction` 即可。 - Thomas M. DuBuisson