Как считать битовый массив в OCAML?

К сожалению, в настоящее время невозможно достичь этого эффекта на уровне схемы.

Вы должны понять, как реализовать это на прикладном уровне.

Если это отношение LIKED отличается от других отношений LIKED (т. е. отношения LIKED между парой меток других узлов), тогда вы можете назвать его как угодно и создать «ограничение существования свойства отношения» [115 ] на это.

6
задан tshepang 27 February 2014 в 19:29
поделиться

3 ответа

Я не знаю out-of-the поля способ сделать это. Вы могли открыть файл с open_in и считайте его байт за один раз с input_char, впитайте заголовок и данные и растите color array array тот путь к простым форматам (например, BMPs), но к чему-либо как JPGs или PNGs, решением для самокрутки, вероятно, было бы больше работы, чем Вы, хочет войти.

1
ответ дан 10 December 2019 в 00:45
поделиться

Если Вы не хотите использовать CAMLIMAGE, обычно необработанный RGB или PNM/PPM (которые имеют легкое для создания формата заголовка, сопровождаемого значениями RGB), изображения используются. ImageMagick позволяет Вам затем просматривать, это форматирует, или преобразуйте их в большее количество применимых форматов.

0
ответ дан 10 December 2019 в 00:45
поделиться

CAMLIMAGE должен сделать это. Существует также debian пакет (libcamlimage-ocmal-dev), а также установка через godi, если Вы используете это для управления ocaml пакетами.

Как полезный пример чтения и управления изображениями в ocaml, я предлагаю просмотреть код для алгоритма удаления шва в eigenclass.

Вы можете также, как указано jonathan - но не хорошо - вызывают функции C от ocaml, такие как 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
8
ответ дан 10 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: