Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
20
Task/Grayscale-image/OCaml/grayscale-image-1.ocaml
Normal file
20
Task/Grayscale-image/OCaml/grayscale-image-1.ocaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
let to_grayscale ~img:(_, r_channel, g_channel, b_channel) =
|
||||
let width = Bigarray.Array2.dim1 r_channel
|
||||
and height = Bigarray.Array2.dim2 r_channel in
|
||||
|
||||
let gray_channel =
|
||||
let kind = Bigarray.int8_unsigned
|
||||
and layout = Bigarray.c_layout
|
||||
in
|
||||
(Bigarray.Array2.create kind layout width height)
|
||||
in
|
||||
for y = 0 to pred height do
|
||||
for x = 0 to pred width do
|
||||
let r = r_channel.{x,y}
|
||||
and g = g_channel.{x,y}
|
||||
and b = b_channel.{x,y} in
|
||||
let v = (2_126 * r + 7_152 * g + 722 * b) / 10_000 in
|
||||
gray_channel.{x,y} <- v;
|
||||
done;
|
||||
done;
|
||||
(gray_channel)
|
||||
20
Task/Grayscale-image/OCaml/grayscale-image-2.ocaml
Normal file
20
Task/Grayscale-image/OCaml/grayscale-image-2.ocaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
let to_color ~img:gray_channel =
|
||||
let width = Bigarray.Array2.dim1 gray_channel
|
||||
and height = Bigarray.Array2.dim2 gray_channel in
|
||||
let all_channels =
|
||||
let kind = Bigarray.int8_unsigned
|
||||
and layout = Bigarray.c_layout
|
||||
in
|
||||
Bigarray.Array3.create kind layout 3 width height
|
||||
in
|
||||
let r_channel = Bigarray.Array3.slice_left_2 all_channels 0
|
||||
and g_channel = Bigarray.Array3.slice_left_2 all_channels 1
|
||||
and b_channel = Bigarray.Array3.slice_left_2 all_channels 2
|
||||
in
|
||||
Bigarray.Array2.blit gray_channel r_channel;
|
||||
Bigarray.Array2.blit gray_channel g_channel;
|
||||
Bigarray.Array2.blit gray_channel b_channel;
|
||||
(all_channels,
|
||||
r_channel,
|
||||
g_channel,
|
||||
b_channel)
|
||||
5
Task/Grayscale-image/OCaml/grayscale-image-3.ocaml
Normal file
5
Task/Grayscale-image/OCaml/grayscale-image-3.ocaml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
let gray_get_pixel_unsafe (gray_channel) =
|
||||
(fun x y -> gray_channel.{x,y})
|
||||
|
||||
let gray_put_pixel_unsafe (gray_channel) v =
|
||||
(fun x y -> gray_channel.{x,y} <- v)
|
||||
Loading…
Add table
Add a link
Reference in a new issue