CAMLIMAGE powinien to zrobić. Istnieje również pakiet debian (libcamlimage-ocmal-dev
), a także instalacja poprzez godi, jeśli używasz tego do zarządzania pakietami ocaml.
Jako przydatny przykład czytania i manipulowania obrazami w ocaml, sugeruję przejrzenie kodu dla algorytmu usuwania szwów na eigenclass.
Możesz także, jak stwierdził jonathan - ale nie za dobrze - wywoływać funkcje C z ocaml, takie jak ImageMagick. Chociaż zamierzasz wykonać wiele manipulacji danymi obrazu, aby przenieść obraz do ocaml, zawsze możesz napisać c dla wszystkich swoich funkcji, aby manipulować obrazem jako abstrakcyjnym typem danych - wydaje się to być całkowicie przeciwne do tego, co chcesz jednak, pisząc większość programu w C nie ocaml.
Ponieważ ostatnio chciałem bawić się z kamerami (i miałem problemy z instalacją - musiałem zmodyfikować dwa pliki ml z błędów kompilacji, jednak bardzo proste). Oto szybki program, black_and_white.ml
, i jak go skompilować. Ten powinien dostać ktoś bezboleśnie rozpocząć korzystanie z pakietu (zwłaszcza, dynamiczne generowanie obrazu):
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)
I skompilować,
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
I biegać,
./black_and_white 20 20 test1.png
Dziękuję za odpowiedź, ale naprawdę potrzebuję kilku linii, które odczytują plik * .bmp i przekształcają go w tablicę kolorów, twoje librairies są cudowne, ale nie potrzebuję tego wszystkiego, więc możesz pomóc ! – 0xFF
biblioteki lub toczyć własne, jakich innych opcji oczekujesz? – nlucaroni
Zainstalowałem najnowsze ocaml i biblioteki dostępne z menadżera pakietów Debian Wheezy, dokładnie skopiowałem twój przykład i skompilowałem zgodnie z instrukcjami. Mój komunikat o błędzie: "Niezwiązany kolor modułu". Czy są jakieś "otwarte" stwierdzenia, o których zapomniałeś wspomnieć, czy jeszcze lepiej, czy możesz dostarczyć plik Makefile kompatybilny z OCamlMakefile, który rozwiąże wszystkie zależności? Dzięki! –