From 2dbd8ea4bd5453876c1ad605669965d036307a5b Mon Sep 17 00:00:00 2001 From: rakesh Date: Sun, 8 Oct 2023 15:35:48 +0530 Subject: [PATCH 1/8] Initial support for FileIO --- .gitignore | 4 +++- Project.toml | 1 + src/OpenCV.jl | 2 ++ src/fileio.jl | 24 ++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/fileio.jl diff --git a/.gitignore b/.gitignore index 21caefb..5a4b8af 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,6 @@ docs/site/ # It records a fixed state of all packages used by the project. As such, it should not be # committed for packages, but should be committed for applications that require a static # environment. -Manifest.toml \ No newline at end of file +Manifest.toml + +.vscode \ No newline at end of file diff --git a/Project.toml b/Project.toml index 748570c..ac29156 100644 --- a/Project.toml +++ b/Project.toml @@ -5,6 +5,7 @@ version = "4.5.3" [deps] CxxWrap = "1f15a43c-97ca-5a2a-ae31-89f07a497df4" +FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" OpenCV_jll = "33b9d88c-85f9-5d73-bd91-4e2b95a9aa0b" [compat] diff --git a/src/OpenCV.jl b/src/OpenCV.jl index 825841a..89b5ab4 100644 --- a/src/OpenCV.jl +++ b/src/OpenCV.jl @@ -4,4 +4,6 @@ using OpenCV_jll include(joinpath(OpenCV_jll.artifact_dir, "OpenCV", "src", "OpenCV.jl")) +include("fileio.jl") + end diff --git a/src/fileio.jl b/src/fileio.jl new file mode 100644 index 0000000..3180597 --- /dev/null +++ b/src/fileio.jl @@ -0,0 +1,24 @@ +using FileIO: File, DataFormat, Stream, stream + +const _IMAGE_FORMATS = (:PNG, :JPEG) +const _IMAGE_FILE_FORMATS = Union{(File{DataFormat{T}} for T in _IMAGE_FORMATS)...} + +function load(f::T) where {T<:_IMAGE_FILE_FORMATS} + data = imread(f.filename) + return data +end + +function load(f::T, flags::Int) where {T<:_IMAGE_FILE_FORMATS} + data = imread(f.filename, flags) + return data +end + +function save(f::T, image::InputArray) where {T<:_IMAGE_FILE_FORMATS} + imwrite(f.filename, image) +end + +function save(f::T, image::InputArray, params::Array{Int32,1}) where {T<:_IMAGE_FILE_FORMATS} + imwrite(f.filename, image, params) +end + +## To-do add streams From 3de814e5a5f203cd2739aaaa631bbd307707724c Mon Sep 17 00:00:00 2001 From: rakesh Date: Sun, 8 Oct 2023 17:59:34 +0530 Subject: [PATCH 2/8] Stream support for FileIO and show method --- Project.toml | 1 + src/OpenCV.jl | 1 + src/fileio.jl | 38 ++++++++++++++++++++++++++++++-------- src/show.jl | 5 +++++ 4 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 src/show.jl diff --git a/Project.toml b/Project.toml index ac29156..1ab0437 100644 --- a/Project.toml +++ b/Project.toml @@ -10,4 +10,5 @@ OpenCV_jll = "33b9d88c-85f9-5d73-bd91-4e2b95a9aa0b" [compat] CxxWrap = "0.11, 0.12, 0.13" +FileIO = "1.16" julia = "^1.6.0" diff --git a/src/OpenCV.jl b/src/OpenCV.jl index 89b5ab4..d554f2a 100644 --- a/src/OpenCV.jl +++ b/src/OpenCV.jl @@ -1,6 +1,7 @@ module OpenCV using OpenCV_jll +using FileIO: File, DataFormat, Stream, stream include(joinpath(OpenCV_jll.artifact_dir, "OpenCV", "src", "OpenCV.jl")) diff --git a/src/fileio.jl b/src/fileio.jl index 3180597..e97ef19 100644 --- a/src/fileio.jl +++ b/src/fileio.jl @@ -1,24 +1,46 @@ -using FileIO: File, DataFormat, Stream, stream - const _IMAGE_FORMATS = (:PNG, :JPEG) -const _IMAGE_FILE_FORMATS = Union{(File{DataFormat{T}} for T in _IMAGE_FORMATS)...} +const _IMAGE_DATA_FORMATS = Union{(DataFormat{f} for f in _IMAGE_FORMATS)...} + +function _get_format_extension(fmt) + FileIO.info(fmt)[2] +end -function load(f::T) where {T<:_IMAGE_FILE_FORMATS} +## Load Images +function load(f::File{T}) where {T<:_IMAGE_DATA_FORMATS} data = imread(f.filename) return data end -function load(f::T, flags::Int) where {T<:_IMAGE_FILE_FORMATS} +function load(f::File{T}, flags::Int) where {T<:_IMAGE_DATA_FORMATS} data = imread(f.filename, flags) return data end -function save(f::T, image::InputArray) where {T<:_IMAGE_FILE_FORMATS} +function load(s::Stream{T}, flags::Int=IMREAD_UNCHANGED) where {T<:_IMAGE_DATA_FORMATS} + data = read(stream(s)) + img = imdecode(reshape(data, 1, 1, :), flags) + return img +end + +## Save Images + +function save(f::File{T}, image::InputArray) where {T<:_IMAGE_DATA_FORMATS} imwrite(f.filename, image) end -function save(f::T, image::InputArray, params::Array{Int32,1}) where {T<:_IMAGE_FILE_FORMATS} +function save(f::File{T}, image::InputArray, params::Array{Int32,1}) where {T<:_IMAGE_DATA_FORMATS} imwrite(f.filename, image, params) end -## To-do add streams +function save(s::Stream{T}, image::InputArray) where {T<:_IMAGE_DATA_FORMATS} + ext = _get_format_extension(T) + enc_img = imencode(ext, image) + write(stream(s), enc_img) +end + +function save(s::Stream{T}, image::InputArray, params::Vector{Int32}) where {T<:_IMAGE_DATA_FORMATS} + ext = _get_format_extension(T) + enc_img = imencode(ext, image, params) + write(stream(s), enc_img) +end + diff --git a/src/show.jl b/src/show.jl new file mode 100644 index 0000000..ead54a2 --- /dev/null +++ b/src/show.jl @@ -0,0 +1,5 @@ +_format_stream(format, io) = Stream{format}(io) + +function Base.show(io::IO, ::MIME"image/png", image::InputArray) + save(_format_stream(DataFormat(:PNG), io), image) +end \ No newline at end of file From cee013e0f77485bd207d5da742feb9b4bc7ba331 Mon Sep 17 00:00:00 2001 From: rakesh Date: Sun, 8 Oct 2023 18:19:18 +0530 Subject: [PATCH 3/8] some fixes --- src/OpenCV.jl | 4 +++- src/fileio.jl | 8 ++++---- src/show.jl | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/OpenCV.jl b/src/OpenCV.jl index d554f2a..9d9d48e 100644 --- a/src/OpenCV.jl +++ b/src/OpenCV.jl @@ -1,10 +1,12 @@ module OpenCV using OpenCV_jll -using FileIO: File, DataFormat, Stream, stream +using FileIO +using FileIO: DataFormat, File, Stream, stream include(joinpath(OpenCV_jll.artifact_dir, "OpenCV", "src", "OpenCV.jl")) include("fileio.jl") +include("show.jl") end diff --git a/src/fileio.jl b/src/fileio.jl index e97ef19..e0e09e6 100644 --- a/src/fileio.jl +++ b/src/fileio.jl @@ -34,13 +34,13 @@ end function save(s::Stream{T}, image::InputArray) where {T<:_IMAGE_DATA_FORMATS} ext = _get_format_extension(T) - enc_img = imencode(ext, image) - write(stream(s), enc_img) + enc_img = imencode(ext, image)[2] + Base.write(stream(s), enc_img) end function save(s::Stream{T}, image::InputArray, params::Vector{Int32}) where {T<:_IMAGE_DATA_FORMATS} ext = _get_format_extension(T) - enc_img = imencode(ext, image, params) - write(stream(s), enc_img) + enc_img = imencode(ext, image, params)[2] + Base.write(stream(s), enc_img) end diff --git a/src/show.jl b/src/show.jl index ead54a2..6c26879 100644 --- a/src/show.jl +++ b/src/show.jl @@ -1,5 +1,5 @@ _format_stream(format, io) = Stream{format}(io) function Base.show(io::IO, ::MIME"image/png", image::InputArray) - save(_format_stream(DataFormat(:PNG), io), image) + save(_format_stream(DataFormat{:PNG}, io), image) end \ No newline at end of file From 16bbe699562f65c50c1f395018d64b003632289e Mon Sep 17 00:00:00 2001 From: rakesh Date: Sun, 8 Oct 2023 18:44:32 +0530 Subject: [PATCH 4/8] restrict show method only for Mat type --- src/fileio.jl | 1 + src/show.jl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fileio.jl b/src/fileio.jl index e0e09e6..1e717a5 100644 --- a/src/fileio.jl +++ b/src/fileio.jl @@ -6,6 +6,7 @@ function _get_format_extension(fmt) end ## Load Images + function load(f::File{T}) where {T<:_IMAGE_DATA_FORMATS} data = imread(f.filename) return data diff --git a/src/show.jl b/src/show.jl index 6c26879..9c72528 100644 --- a/src/show.jl +++ b/src/show.jl @@ -1,5 +1,5 @@ _format_stream(format, io) = Stream{format}(io) -function Base.show(io::IO, ::MIME"image/png", image::InputArray) +function Base.show(io::IO, ::MIME"image/png", image::Mat{T}) where {T<:dtypes} save(_format_stream(DataFormat{:PNG}, io), image) end \ No newline at end of file From 11730b2e56fdc42c78073938a924ea1b87ac5084 Mon Sep 17 00:00:00 2001 From: rakesh Date: Sun, 8 Oct 2023 20:22:38 +0530 Subject: [PATCH 5/8] add more image formats --- src/fileio.jl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/fileio.jl b/src/fileio.jl index 1e717a5..661f272 100644 --- a/src/fileio.jl +++ b/src/fileio.jl @@ -1,5 +1,10 @@ -const _IMAGE_FORMATS = (:PNG, :JPEG) -const _IMAGE_DATA_FORMATS = Union{(DataFormat{f} for f in _IMAGE_FORMATS)...} +const _IMAGE_DATA_FORMATS = Union{ + format"BMP", + format"JP2", + format"JPEG", + format"PNG", + format"TIFF", +} function _get_format_extension(fmt) FileIO.info(fmt)[2] From 4b8655f4523ab8bfd6d421c2e7c1af79f903f8d4 Mon Sep 17 00:00:00 2001 From: rakesh Date: Mon, 9 Oct 2023 18:55:05 +0530 Subject: [PATCH 6/8] add test cases for fileio --- test/Project.toml | 1 + test/runtests.jl | 2 ++ test/test_fileio.jl | 58 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 test/test_fileio.jl diff --git a/test/Project.toml b/test/Project.toml index a165d83..47b270c 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,6 +1,7 @@ [deps] Artifacts = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" LazyArtifacts = "4af54fe1-eca0-43a8-85a7-787d91b784e3" OpenCV = "f878e3a2-a245-4720-8660-60795d644f2a" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/test/runtests.jl b/test/runtests.jl index d8286d9..08c1515 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,6 +1,7 @@ using Artifacts using LazyArtifacts using OpenCV +using FileIO using Test if "OPENCV_TEST_DATA_PATH" in keys(ENV) @@ -16,4 +17,5 @@ end include("test_imgproc.jl") include("test_objdetect.jl") include("test_dnn.jl") + include("test_fileio.jl") end diff --git a/test/test_fileio.jl b/test/test_fileio.jl new file mode 100644 index 0000000..fbd8473 --- /dev/null +++ b/test/test_fileio.jl @@ -0,0 +1,58 @@ +tmpdir = mktempdir() + +images_path = joinpath(opencv_extra_path, "testdata", "python", "images") +images = readdir(images_path, join=true) + +bmp_images = filter(endswith(".bmp"), images) +# jp2_images = filter(endswith(".jp2"), images) # Not available +jpg_images = filter(endswith(".jpg"), images) +png_images = filter(endswith(".png"), images) +tiff_images = filter(endswith(".tiff"), images) + +@testset "BMP" begin + for (idx, img_path) in enumerate(bmp_images) + img1 = load(img_path) + f = joinpath(tmpdir, "img_$idx.bmp") + save(f, img1) + img2 = load(f) + @test img1 == img2 + end +end + +# @testset "JP2" begin +# img1 = rand(UInt8, 3, 1024, 1024) |> OpenCV.Mat +# f = joinpath(tmpdir, "img.jp2") +# save(f, img1) +# img2 = load(f) +# @test OpenCV.PSNR(img1, img2) > 15 +# end + +@testset "JPG" begin + for (idx, img_path) in enumerate(jpg_images) + img1 = load(img_path) + f = joinpath(tmpdir, "img_$idx.jpg") + save(f, img1) + img2 = load(f) + @test OpenCV.PSNR(img1, img2) > 30 + end +end + +@testset "PNG" begin + for (idx, img_path) in enumerate(png_images) + img1 = load(img_path) + f = joinpath(tmpdir, "img_$idx.png") + save(f, img1) + img2 = load(f) + @test img1 == img2 + end +end + +@testset "TIFF" begin + for (idx, img_path) in enumerate(tiff_images) + img1 = load(img_path) + f = joinpath(tmpdir, "img_$idx.tiff") + save(f, img1) + img2 = load(f) + @test img1 == img2 + end +end \ No newline at end of file From f4b4026619219212ad7d38e043e637e03760172d Mon Sep 17 00:00:00 2001 From: rakesh Date: Tue, 10 Oct 2023 17:37:58 +0530 Subject: [PATCH 7/8] add documenation for image read and write --- docs/Project.toml | 3 +- docs/make.jl | 4 + docs/src/Getting started with Images.md | 106 ++++++++++++++++++++++++ docs/src/assets/pluto.png | Bin 0 -> 62589 bytes docs/src/assets/qt.png | Bin 0 -> 13343 bytes src/fileio.jl | 8 +- 6 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 docs/src/Getting started with Images.md create mode 100644 docs/src/assets/pluto.png create mode 100644 docs/src/assets/qt.png diff --git a/docs/Project.toml b/docs/Project.toml index 4e6d994..8b32e20 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,3 +1,4 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -OpenCV = "f878e3a2-a245-4720-8660-60795d644f2a" \ No newline at end of file +FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +OpenCV = "f878e3a2-a245-4720-8660-60795d644f2a" diff --git a/docs/make.jl b/docs/make.jl index f041dd4..79d7d6c 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -7,6 +7,10 @@ DocMeta.setdocmeta!(OpenCV, :DocTestSetup, :(using OpenCV); recursive=true) makedocs(; modules=[OpenCV], sitename="OpenCV.jl", + pages = [ + "OpenCV.jl" => "index.md" + "Getting started with Images" => "Getting started with Images.md" + ] ) deploydocs(; diff --git a/docs/src/Getting started with Images.md b/docs/src/Getting started with Images.md new file mode 100644 index 0000000..dd8ab6f --- /dev/null +++ b/docs/src/Getting started with Images.md @@ -0,0 +1,106 @@ +# Reading and Writing of Images + +OpenCV provides a wide range of functions for image processing, including reading and writing images. + +OpenCV.jl provides 2 ways to read and write images +1. OpenCV native api +2. FileIO.jl api + +OpenCV provides `imread` and `imwrite`, while FileIO privides `load` and `save` for similar functionalities + + +!!! note + + FileIO api not suppport all image formats currently but it support major formats. + If FileIO api not works then use OpenCV native api + +## Reading Images + +```julia +using OpenCV + +img_path = "/path/to/image" +img = OpenCV.imread(img_path) +``` +with FileIO +```julia +using OpenCV, FileIO + +img_path = "/path/to/image" +img = load(img_path) +``` + +in both cases `img` has same data. Both methods accept same reading flags[^imreadflags]. + +```julia +using OpenCV + +img_path = "/path/to/image" +flag = OpenCV.IMREAD_UNCHANGED +img = OpenCV.imread(img_path, flag) +``` +with FileIO +```julia +using OpenCV, FileIO + +img_path = "/path/to/image" +flag = OpenCV.IMREAD_UNCHANGED +img = load(img_path, flag) +``` + +## Writing Images +```julia +using OpenCV + +img = rand(UInt8, 1000, 1000) |> OpenCV.Mat +img_path = "/path/to/image" +OpenCV.imwrite(img_path, img) +``` +with FileIO +```julia +using OpenCV, FileIO + +img = rand(UInt8, 1000, 1000) |> OpenCV.Mat +img_path = "/path/to/image" +save(img_path, img) +``` + +Both methods accept same writing flags[^imwriteflags]. + +```julia +using OpenCV + +img = rand(UInt8, 1000, 1000) |> OpenCV.Mat +img_path = "/path/to/image" +flag = Int32[OpenCV.IMWRITE_JPEG_QUALITY, 100] +OpenCV.imwrite(img_path, img, flag) +``` +with FileIO +```julia +using OpenCV, FileIO + +img = rand(UInt8, 1000, 1000) |> OpenCV.Mat +img_path = "/path/to/image" +flag = Int32[OpenCV.IMWRITE_JPEG_QUALITY, 100] +save(img_path, img, flag) +``` + +## Displaying Images + +When working with images, it's obviously helpful to be able to look at them. If you use Julia through Pluto, VSCode, or IJulia, images should display automatically. + +Preview from Pluto.jl + +![pluto preview](assets/pluto.png) + +`OpenCV.imshow` method display image on Qt window. + +![qt preview](assets/qt.png) + +`Pluto.jl` To-do + +`Makie.jl` To-do + +## Notes +[^imreadflags]: https://docs.opencv.org/4.x/d8/d6a/group__imgcodecs__flags.html#ga61d9b0126a3e57d9277ac48327799c80 +[^imwriteflags]: https://docs.opencv.org/4.x/d8/d6a/group__imgcodecs__flags.html#ga292d81be8d76901bff7988d18d2b42ac \ No newline at end of file diff --git a/docs/src/assets/pluto.png b/docs/src/assets/pluto.png new file mode 100644 index 0000000000000000000000000000000000000000..28acaf15fc5c4d82555bd0068291ab82c907332c GIT binary patch literal 62589 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 literal 0 HcmV?d00001 diff --git a/src/fileio.jl b/src/fileio.jl index 661f272..fb7b218 100644 --- a/src/fileio.jl +++ b/src/fileio.jl @@ -22,7 +22,13 @@ function load(f::File{T}, flags::Int) where {T<:_IMAGE_DATA_FORMATS} return data end -function load(s::Stream{T}, flags::Int=IMREAD_UNCHANGED) where {T<:_IMAGE_DATA_FORMATS} +function load(s::Stream{T}) where {T<:_IMAGE_DATA_FORMATS} + data = read(stream(s)) + img = imdecode(reshape(data, 1, 1, :)) + return img +end + +function load(s::Stream{T}, flags::Int) where {T<:_IMAGE_DATA_FORMATS} data = read(stream(s)) img = imdecode(reshape(data, 1, 1, :), flags) return img From 6a189ca9a66c0e23e94250476b77e7b2abc63675 Mon Sep 17 00:00:00 2001 From: rakeshksr Date: Mon, 20 May 2024 08:04:08 +0530 Subject: [PATCH 8/8] Fix typo --- docs/src/Getting started with Images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/Getting started with Images.md b/docs/src/Getting started with Images.md index dd8ab6f..db10e90 100644 --- a/docs/src/Getting started with Images.md +++ b/docs/src/Getting started with Images.md @@ -97,7 +97,7 @@ Preview from Pluto.jl ![qt preview](assets/qt.png) -`Pluto.jl` To-do +`Plots.jl` To-do `Makie.jl` To-do