当前位置:  开发笔记 > 编程语言 > 正文

如何在OCAML中读取位图?

如何解决《如何在OCAML中读取位图?》经验,为你挑选了1个好方法。

我想使用OCAML读取位图文件(来自文件系统)并将像素(颜色)存储在具有位图的第二维的数组内,每个像素将占用数组中的一个单元.

我找到了函数Graphics.dump_image image - > color array array 但它不能从文件中读取.



1> nlucaroni..:

CAMLIMAGE应该这样做.还有一个debian包(libcamlimage-ocmal-dev),以及通过godi安装,如果你用它来管理你的ocaml包.

作为在ocaml中读取和操作图像的一个有用示例,我建议在本征类上查看接缝去除算法的代码.

你也可以像jonathan所说的那样 - 但不是很好 - 从ocaml调用C函数,比如ImageMagick.虽然你要对图像数据进行大量操作以将图像带入ocaml,但你总是可以为所有函数编写c来操作图像作为抽象数据类型 - 这似乎完全与你想要的,用C语言编写大部分程序而不是ocaml.

因为我最近想玩camlimages(并且在安装它时遇到了一些麻烦 - 我不得不修改编译错误中的两个ml文件,但非常简单).这是一个快速程序,black_and_white.ml以及如何编译它.这应该让人无痛地开始使用包(特别是动态图像生成):

   let () =
       let width  = int_of_string Sys.argv.(1)
       and length = int_of_string Sys.argv.(2)
       and name   = Sys.argv.(3)
       and black = {Color.Rgb.r = 0; g=0; b=0; }
       and white = {Color.Rgb.r = 255; g=255; b=255; } in
       let image = Rgb24.make width length black in
       for i = 0 to width-1 do
           for j = 0 to (length/2) - 1 do
               Rgb24.set image i j white;
           done;
       done;
       Png.save name [] (Images.Rgb24 image)

并编译,

ocamlopt.opt -I /usr/local/lib/ocaml/camlimages/ ci_core.cmxa graphics.cmxa ci_graphics.cmxa ci_png.cmxa black_and_white.ml -o black_and_white

并运行,

./black_and_white 20 20 test1.png

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有