From dadaa2dc25283bc67b18f0b2761286c58f8a9f8f Mon Sep 17 00:00:00 2001 From: pbkx <93405617+pbkx@users.noreply.github.com> Date: Sun, 20 Sep 2026 17:32:53 -0700 Subject: [PATCH] fix InputArray empty for vector --- modules/core/src/matrix_wrap.cpp | 2 +- modules/core/test/test_mat.cpp | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/modules/core/src/matrix_wrap.cpp b/modules/core/src/matrix_wrap.cpp index e7362196c5..dd7922694d 100644 --- a/modules/core/src/matrix_wrap.cpp +++ b/modules/core/src/matrix_wrap.cpp @@ -728,7 +728,7 @@ bool _InputArray::empty(int i) const CV_Assert((size_t)i < mv->size()); return mv->at(i).empty(); } - else if (k == STD_VECTOR_MAT) { + else if (k == STD_VECTOR_UMAT) { auto umv = reinterpret_cast*>(obj); CV_Assert((size_t)i < umv->size()); return umv->at(i).empty(); diff --git a/modules/core/test/test_mat.cpp b/modules/core/test/test_mat.cpp index e0c4074545..f948fc23ae 100644 --- a/modules/core/test/test_mat.cpp +++ b/modules/core/test/test_mat.cpp @@ -1415,6 +1415,23 @@ TEST(Core_InputArray, empty) ASSERT_TRUE( _InputArray(data).empty() ); } +TEST(Core_InputArray, element_empty) +{ + Mat src = Mat::ones(2, 2, CV_8U); + + std::vector mats(2); + mats[1] = src; + InputArray matInput(mats); + EXPECT_TRUE(matInput.empty(0)); + EXPECT_FALSE(matInput.empty(1)); + + std::vector umats(2); + src.copyTo(umats[1]); + InputArray umatInput(umats); + EXPECT_NO_THROW({ EXPECT_TRUE(umatInput.empty(0)); }); + EXPECT_NO_THROW({ EXPECT_FALSE(umatInput.empty(1)); }); +} + TEST(Core_InputArray, convert_from_vector_over2GB) { applyTestTag(CV_TEST_TAG_MEMORY_6GB);