fix InputArray empty for vector<UMat>

This commit is contained in:
pbkx
2026-09-20 17:32:53 -07:00
parent 8d126c4a67
commit dadaa2dc25
2 changed files with 18 additions and 1 deletions
+1 -1
View File
@@ -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<const std::vector<UMat>*>(obj);
CV_Assert((size_t)i < umv->size());
return umv->at(i).empty();
+17
View File
@@ -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<Mat> mats(2);
mats[1] = src;
InputArray matInput(mats);
EXPECT_TRUE(matInput.empty(0));
EXPECT_FALSE(matInput.empty(1));
std::vector<UMat> 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);