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"); }