mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 23:33:05 +04:00
added vector<bool> support (http://code.opencv.org/issues/3826)
This commit is contained in:
@@ -1154,6 +1154,21 @@ Mat _InputArray::getMat_(int i) const
|
||||
return !v.empty() ? Mat(size(), t, (void*)&v[0]) : Mat();
|
||||
}
|
||||
|
||||
if( k == STD_BOOL_VECTOR )
|
||||
{
|
||||
CV_Assert( i < 0 );
|
||||
int t = CV_8U;
|
||||
const std::vector<bool>& v = *(const std::vector<bool>*)obj;
|
||||
int j, n = (int)v.size();
|
||||
if( n == 0 )
|
||||
return Mat();
|
||||
Mat m(1, n, t);
|
||||
uchar* dst = m.data;
|
||||
for( j = 0; j < n; j++ )
|
||||
dst[j] = (uchar)v[j];
|
||||
return m;
|
||||
}
|
||||
|
||||
if( k == NONE )
|
||||
return Mat();
|
||||
|
||||
@@ -1481,6 +1496,13 @@ Size _InputArray::size(int i) const
|
||||
return szb == szi ? Size((int)szb, 1) : Size((int)(szb/CV_ELEM_SIZE(flags)), 1);
|
||||
}
|
||||
|
||||
if( k == STD_BOOL_VECTOR )
|
||||
{
|
||||
CV_Assert( i < 0 );
|
||||
const std::vector<bool>& v = *(const std::vector<bool>*)obj;
|
||||
return Size((int)v.size(), 1);
|
||||
}
|
||||
|
||||
if( k == NONE )
|
||||
return Size();
|
||||
|
||||
@@ -1661,7 +1683,7 @@ int _InputArray::dims(int i) const
|
||||
return 2;
|
||||
}
|
||||
|
||||
if( k == STD_VECTOR )
|
||||
if( k == STD_VECTOR || k == STD_BOOL_VECTOR )
|
||||
{
|
||||
CV_Assert( i < 0 );
|
||||
return 2;
|
||||
@@ -1773,7 +1795,7 @@ int _InputArray::type(int i) const
|
||||
if( k == EXPR )
|
||||
return ((const MatExpr*)obj)->type();
|
||||
|
||||
if( k == MATX || k == STD_VECTOR || k == STD_VECTOR_VECTOR )
|
||||
if( k == MATX || k == STD_VECTOR || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
|
||||
return CV_MAT_TYPE(flags);
|
||||
|
||||
if( k == NONE )
|
||||
@@ -1848,6 +1870,12 @@ bool _InputArray::empty() const
|
||||
return v.empty();
|
||||
}
|
||||
|
||||
if( k == STD_BOOL_VECTOR )
|
||||
{
|
||||
const std::vector<bool>& v = *(const std::vector<bool>*)obj;
|
||||
return v.empty();
|
||||
}
|
||||
|
||||
if( k == NONE )
|
||||
return true;
|
||||
|
||||
@@ -1892,7 +1920,8 @@ bool _InputArray::isContinuous(int i) const
|
||||
if( k == UMAT )
|
||||
return i < 0 ? ((const UMat*)obj)->isContinuous() : true;
|
||||
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR || k == NONE || k == STD_VECTOR_VECTOR)
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR ||
|
||||
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
|
||||
return true;
|
||||
|
||||
if( k == STD_VECTOR_MAT )
|
||||
@@ -1923,7 +1952,8 @@ bool _InputArray::isSubmatrix(int i) const
|
||||
if( k == UMAT )
|
||||
return i < 0 ? ((const UMat*)obj)->isSubmatrix() : false;
|
||||
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR || k == NONE || k == STD_VECTOR_VECTOR)
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR ||
|
||||
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
|
||||
return false;
|
||||
|
||||
if( k == STD_VECTOR_MAT )
|
||||
@@ -1961,7 +1991,8 @@ size_t _InputArray::offset(int i) const
|
||||
return ((const UMat*)obj)->offset;
|
||||
}
|
||||
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR || k == NONE || k == STD_VECTOR_VECTOR)
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR ||
|
||||
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
|
||||
return 0;
|
||||
|
||||
if( k == STD_VECTOR_MAT )
|
||||
@@ -2008,7 +2039,8 @@ size_t _InputArray::step(int i) const
|
||||
return ((const UMat*)obj)->step;
|
||||
}
|
||||
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR || k == NONE || k == STD_VECTOR_VECTOR)
|
||||
if( k == EXPR || k == MATX || k == STD_VECTOR ||
|
||||
k == NONE || k == STD_VECTOR_VECTOR || k == STD_BOOL_VECTOR )
|
||||
return 0;
|
||||
|
||||
if( k == STD_VECTOR_MAT )
|
||||
@@ -2043,7 +2075,7 @@ void _InputArray::copyTo(const _OutputArray& arr) const
|
||||
|
||||
if( k == NONE )
|
||||
arr.release();
|
||||
else if( k == MAT || k == MATX || k == STD_VECTOR )
|
||||
else if( k == MAT || k == MATX || k == STD_VECTOR || k == STD_BOOL_VECTOR )
|
||||
{
|
||||
Mat m = getMat();
|
||||
m.copyTo(arr);
|
||||
@@ -2068,7 +2100,7 @@ void _InputArray::copyTo(const _OutputArray& arr, const _InputArray & mask) cons
|
||||
|
||||
if( k == NONE )
|
||||
arr.release();
|
||||
else if( k == MAT || k == MATX || k == STD_VECTOR )
|
||||
else if( k == MAT || k == MATX || k == STD_VECTOR || k == STD_BOOL_VECTOR )
|
||||
{
|
||||
Mat m = getMat();
|
||||
m.copyTo(arr, mask);
|
||||
|
||||
Reference in New Issue
Block a user