@@ -32,7 +32,7 @@ Mat _InputArray::getMat_(int i) const
32
32
return m->getMat (accessFlags).row (i);
33
33
}
34
34
35
- if ( k == MATX || k == STD_ARRAY )
35
+ if ( k == MATX)
36
36
{
37
37
CV_Assert ( i < 0 );
38
38
return Mat (sz, flags, obj);
@@ -172,7 +172,7 @@ void _InputArray::getMatVector(std::vector<Mat>& mv) const
172
172
return ;
173
173
}
174
174
175
- if ( k == MATX || k == STD_ARRAY )
175
+ if ( k == MATX)
176
176
{
177
177
size_t n = sz.height , esz = CV_ELEM_SIZE (flags);
178
178
mv.resize (n);
@@ -361,7 +361,14 @@ ogl::Buffer _InputArray::getOGlBuffer() const
361
361
int _InputArray::kind () const
362
362
{
363
363
int k = flags & KIND_MASK;
364
+ #if CV_VERSION_MAJOR < 5
364
365
CV_DbgAssert (k != EXPR);
366
+ #if CV_VERSION_MAJOR < 4
367
+ if (k == STD_ARRAY)
368
+ k = MATX;
369
+ #endif
370
+ CV_DbgAssert (k != STD_ARRAY);
371
+ #endif
365
372
return k;
366
373
}
367
374
@@ -391,7 +398,7 @@ Size _InputArray::size(int i) const
391
398
return ((const UMat*)obj)->size ();
392
399
}
393
400
394
- if ( k == MATX || k == STD_ARRAY )
401
+ if ( k == MATX)
395
402
{
396
403
CV_Assert ( i < 0 );
397
404
return sz;
@@ -610,7 +617,7 @@ int _InputArray::dims(int i) const
610
617
return ((const UMat*)obj)->dims ;
611
618
}
612
619
613
- if ( k == MATX || k == STD_ARRAY )
620
+ if ( k == MATX)
614
621
{
615
622
CV_Assert ( i < 0 );
616
623
return 2 ;
@@ -744,7 +751,7 @@ int _InputArray::type(int i) const
744
751
if ( k == UMAT )
745
752
return ((const UMat*)obj)->type ();
746
753
747
- if ( k == MATX || k == STD_VECTOR || k == STD_ARRAY || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
754
+ if ( k == MATX || k == STD_VECTOR || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
748
755
return CV_MAT_TYPE (flags);
749
756
750
757
if ( k == NONE )
@@ -830,7 +837,7 @@ bool _InputArray::empty() const
830
837
if ( k == UMAT )
831
838
return ((const UMat*)obj)->empty ();
832
839
833
- if ( k == MATX || k == STD_ARRAY )
840
+ if ( k == MATX)
834
841
return false ;
835
842
836
843
if ( k == STD_VECTOR )
@@ -899,7 +906,7 @@ bool _InputArray::isContinuous(int i) const
899
906
if ( k == UMAT )
900
907
return i < 0 ? ((const UMat*)obj)->isContinuous () : true ;
901
908
902
- if ( k == MATX || k == STD_VECTOR || k == STD_ARRAY ||
909
+ if ( k == MATX || k == STD_VECTOR ||
903
910
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
904
911
return true ;
905
912
@@ -940,7 +947,7 @@ bool _InputArray::isSubmatrix(int i) const
940
947
if ( k == UMAT )
941
948
return i < 0 ? ((const UMat*)obj)->isSubmatrix () : false ;
942
949
943
- if ( k == MATX || k == STD_VECTOR || k == STD_ARRAY ||
950
+ if ( k == MATX || k == STD_VECTOR ||
944
951
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
945
952
return false ;
946
953
@@ -985,7 +992,7 @@ size_t _InputArray::offset(int i) const
985
992
return ((const UMat*)obj)->offset ;
986
993
}
987
994
988
- if ( k == MATX || k == STD_VECTOR || k == STD_ARRAY ||
995
+ if ( k == MATX || k == STD_VECTOR ||
989
996
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
990
997
return 0 ;
991
998
@@ -1044,7 +1051,7 @@ size_t _InputArray::step(int i) const
1044
1051
return ((const UMat*)obj)->step ;
1045
1052
}
1046
1053
1047
- if ( k == MATX || k == STD_VECTOR || k == STD_ARRAY ||
1054
+ if ( k == MATX || k == STD_VECTOR ||
1048
1055
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
1049
1056
return 0 ;
1050
1057
@@ -1090,7 +1097,7 @@ void _InputArray::copyTo(const _OutputArray& arr) const
1090
1097
1091
1098
if ( k == NONE )
1092
1099
arr.release ();
1093
- else if ( k == MAT || k == MATX || k == STD_VECTOR || k == STD_ARRAY || k == STD_BOOL_VECTOR )
1100
+ else if ( k == MAT || k == MATX || k == STD_VECTOR || k == STD_BOOL_VECTOR )
1094
1101
{
1095
1102
Mat m = getMat ();
1096
1103
m.copyTo (arr);
@@ -1111,7 +1118,7 @@ void _InputArray::copyTo(const _OutputArray& arr, const _InputArray & mask) cons
1111
1118
1112
1119
if ( k == NONE )
1113
1120
arr.release ();
1114
- else if ( k == MAT || k == MATX || k == STD_VECTOR || k == STD_ARRAY || k == STD_BOOL_VECTOR )
1121
+ else if ( k == MAT || k == MATX || k == STD_VECTOR || k == STD_BOOL_VECTOR )
1115
1122
{
1116
1123
Mat m = getMat ();
1117
1124
m.copyTo (arr, mask);
@@ -1299,16 +1306,27 @@ void _OutputArray::create(int d, const int* sizes, int mtype, int i,
1299
1306
CV_Assert ( i < 0 );
1300
1307
int type0 = CV_MAT_TYPE (flags);
1301
1308
CV_Assert ( mtype == type0 || (CV_MAT_CN (mtype) == 1 && ((1 << type0) & fixedDepthMask) != 0 ) );
1302
- CV_Assert ( d == 2 && ((sizes[0 ] == sz.height && sizes[1 ] == sz.width ) ||
1303
- (allowTransposed && sizes[0 ] == sz.width && sizes[1 ] == sz.height )));
1304
- return ;
1305
- }
1306
-
1307
- if ( k == STD_ARRAY )
1308
- {
1309
- int type0 = CV_MAT_TYPE (flags);
1310
- CV_Assert ( mtype == type0 || (CV_MAT_CN (mtype) == 1 && ((1 << type0) & fixedDepthMask) != 0 ) );
1311
- CV_Assert ( d == 2 && sz.area () == sizes[0 ]*sizes[1 ]);
1309
+ CV_CheckLE (d, 2 , " " );
1310
+ Size requested_size (d == 2 ? sizes[1 ] : 1 , d >= 1 ? sizes[0 ] : 1 );
1311
+ if (sz.width == 1 || sz.height == 1 )
1312
+ {
1313
+ // NB: 1D arrays assume allowTransposed=true (see #4159)
1314
+ int total_1d = std::max (sz.width , sz.height );
1315
+ CV_Check (requested_size, std::max (requested_size.width , requested_size.height ) == total_1d, " " );
1316
+ }
1317
+ else
1318
+ {
1319
+ if (!allowTransposed)
1320
+ {
1321
+ CV_CheckEQ (requested_size, sz, " " );
1322
+ }
1323
+ else
1324
+ {
1325
+ CV_Check (requested_size,
1326
+ (requested_size == sz || (requested_size.height == sz.width && requested_size.width == sz.height )),
1327
+ " " );
1328
+ }
1329
+ }
1312
1330
return ;
1313
1331
}
1314
1332
@@ -1770,7 +1788,7 @@ void _OutputArray::setTo(const _InputArray& arr, const _InputArray & mask) const
1770
1788
1771
1789
if ( k == NONE )
1772
1790
;
1773
- else if ( k == MAT || k == MATX || k == STD_VECTOR || k == STD_ARRAY )
1791
+ else if ( k == MAT || k == MATX || k == STD_VECTOR)
1774
1792
{
1775
1793
Mat m = getMat ();
1776
1794
m.setTo (arr, mask);
0 commit comments