From db962ea06963cb9fd421e4b25a4d0eec2462bef5 Mon Sep 17 00:00:00 2001 From: Suleyman TURKMEN Date: Wed, 22 Jan 2025 10:40:08 +0300 Subject: [PATCH] Merge pull request #26813 from sturkmen72:fix_animation Added CV_WRAP to Animation struct #26813 closes #26808 ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [x] There is a reference to the original bug report and related work - [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [ ] The feature is well documented and sample code can be built with the project CMake --- .../imgcodecs/include/opencv2/imgcodecs.hpp | 2 +- .../misc/java/test/ImgcodecsTest.java | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/modules/imgcodecs/include/opencv2/imgcodecs.hpp b/modules/imgcodecs/include/opencv2/imgcodecs.hpp index cd648c2c6e..9b04094b54 100644 --- a/modules/imgcodecs/include/opencv2/imgcodecs.hpp +++ b/modules/imgcodecs/include/opencv2/imgcodecs.hpp @@ -267,7 +267,7 @@ struct CV_EXPORTS_W_SIMPLE Animation - Defaults to `Scalar()`, indicating an empty color (usually transparent if supported). - This background color provides a solid fill behind frames that have transparency, ensuring a consistent display appearance. */ - Animation(int loopCount = 0, Scalar bgColor = Scalar()); + CV_WRAP Animation(int loopCount = 0, Scalar bgColor = Scalar()); }; /** @brief Loads an image from a file. diff --git a/modules/imgcodecs/misc/java/test/ImgcodecsTest.java b/modules/imgcodecs/misc/java/test/ImgcodecsTest.java index ba22aac06e..1f5de6a2ef 100644 --- a/modules/imgcodecs/misc/java/test/ImgcodecsTest.java +++ b/modules/imgcodecs/misc/java/test/ImgcodecsTest.java @@ -1,13 +1,46 @@ package org.opencv.test.imgcodecs; +import org.opencv.core.Mat; import org.opencv.core.MatOfByte; import org.opencv.core.MatOfInt; +import org.opencv.imgproc.Imgproc; import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgcodecs.Animation; import org.opencv.test.OpenCVTestCase; import org.opencv.test.OpenCVTestRunner; +import java.util.ArrayList; +import java.util.List; + public class ImgcodecsTest extends OpenCVTestCase { + public void testAnimation() { + Mat src = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH, Imgcodecs.IMREAD_REDUCED_COLOR_4); + assertFalse(src.empty()); + + Mat rgb = new Mat(); + Imgproc.cvtColor(src, rgb, Imgproc.COLOR_BGR2RGB); + + Animation animation = new Animation(); + List frames = new ArrayList<>(); + MatOfInt durations = new MatOfInt(100, 100); + + frames.add(src); + frames.add(rgb); + + animation.set_frames(frames); + animation.set_durations(durations); + + String filename = OpenCVTestRunner.getTempFileName("png"); + assertTrue(Imgcodecs.imwriteanimation(filename, animation)); + + Animation readAnimation = new Animation(); + assertTrue(Imgcodecs.imreadanimation(filename, readAnimation)); + + List readFrames = readAnimation.get_frames(); + assertTrue(readFrames.size() == 2); + } + public void testImdecode() { fail("Not yet implemented"); }