我从未编写过一行Haskell代码(除了我的xmonad配置文件中的随机内容),但我认为学习函数式编程的完美方法就是这样做。我想编写一个程序,读取任意文件类型和大小的图像文件,并读入像素位置列表。然后它应该在以每个输入像素列表为中心的窗口中计算定向梯度的直方图,并且需要将这些直方图写出。我会从小开始,所以我假设我只使用文本文件作为输出。
有什么资源可以在线学习如何做到这一点。特别是,如何读取图像,使用像素阵列等。我不介意需要自己构建基础设施;但我希望这是一个项目,一旦我完成它,我将能够合理地为科学计算任务制作我自己的Haskell子程序。任何其他的想法/建议都非常受欢迎和鼓励,即使你认为这个想法是愚蠢的,或者你是那些奇怪的OCaml人之一。我的背景是所有Python。使用NumPy在Python中很容易做到这一点,但我想学习Haskell的科学知识!
答案 0 :(得分:2)
如果您以前从未编写过任何Haskell代码,我建议您不要使用二进制数据操作,因为您通常会使用库而不是自己学习语言。也许您应首先查看Learn You a Haskell,Real World Haskell或Yet Another Haskell Tutorial。
如果您真的希望继续该项目,我建议您使用PGM,因为它是非常简单的图像格式。我最近在Haskell中为PGM实现了一个解析器 我最大的困难是要了解如何在Haskell中处理二进制数据。以下是一些帮助我的资源:
答案 1 :(得分:1)
我的(熟练的)学生就在上周实施了这项工作。也许你可以查看他implementation of HOG中的提示。那里还有一个实时CPU实现。
但它仍在进行中。