fixed a few warnings on Windows; fixed critical bugs in cvMixChannels and AutoBuffer<>.
This commit is contained in:
parent
306a11a7c5
commit
62569f6926
@ -2311,13 +2311,13 @@ inline Point LineIterator::pos() const
|
|||||||
|
|
||||||
template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::AutoBuffer()
|
template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::AutoBuffer()
|
||||||
{
|
{
|
||||||
ptr = alignPtr(buf, 16);
|
ptr = buf;
|
||||||
size = fixed_size;
|
size = fixed_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::AutoBuffer(size_t _size)
|
template<typename _Tp, size_t fixed_size> inline AutoBuffer<_Tp, fixed_size>::AutoBuffer(size_t _size)
|
||||||
{
|
{
|
||||||
ptr = alignPtr(buf, 16);
|
ptr = buf;
|
||||||
size = fixed_size;
|
size = fixed_size;
|
||||||
allocate(_size);
|
allocate(_size);
|
||||||
}
|
}
|
||||||
@ -2339,11 +2339,10 @@ template<typename _Tp, size_t fixed_size> inline void AutoBuffer<_Tp, fixed_size
|
|||||||
|
|
||||||
template<typename _Tp, size_t fixed_size> inline void AutoBuffer<_Tp, fixed_size>::deallocate()
|
template<typename _Tp, size_t fixed_size> inline void AutoBuffer<_Tp, fixed_size>::deallocate()
|
||||||
{
|
{
|
||||||
_Tp* buf0 = alignPtr(buf, 16);
|
if( ptr != buf )
|
||||||
if( ptr != buf0 )
|
|
||||||
{
|
{
|
||||||
cv::deallocate<_Tp>(ptr, size);
|
cv::deallocate<_Tp>(ptr, size);
|
||||||
ptr = buf0;
|
ptr = buf;
|
||||||
size = fixed_size;
|
size = fixed_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1130,11 +1130,19 @@ cvMixChannels( const CvArr** src, int src_count,
|
|||||||
CvArr** dst, int dst_count,
|
CvArr** dst, int dst_count,
|
||||||
const int* from_to, int pair_count )
|
const int* from_to, int pair_count )
|
||||||
{
|
{
|
||||||
cv::AutoBuffer<cv::Mat, 32> buf;
|
cv::AutoBuffer<cv::Mat, 32> buf(src_count + dst_count);
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for( i = 0; i < src_count; i++ )
|
for( i = 0; i < src_count; i++ )
|
||||||
|
{
|
||||||
|
printf("%d. %p ", i, src[i]);
|
||||||
|
if( src[i] )
|
||||||
|
{
|
||||||
|
CvMat m, *pm = cvGetMat(src[i], &m);
|
||||||
|
printf( "%d x %d, type = %d\n", pm->rows, pm->cols, CV_MAT_TYPE(pm->type));
|
||||||
|
}
|
||||||
buf[i] = cv::cvarrToMat(src[i]);
|
buf[i] = cv::cvarrToMat(src[i]);
|
||||||
|
}
|
||||||
for( i = 0; i < dst_count; i++ )
|
for( i = 0; i < dst_count; i++ )
|
||||||
buf[i+src_count] = cv::cvarrToMat(dst[i]);
|
buf[i+src_count] = cv::cvarrToMat(dst[i]);
|
||||||
cv::mixChannels(&buf[0], src_count, &buf[src_count], dst_count, from_to, pair_count);
|
cv::mixChannels(&buf[0], src_count, &buf[src_count], dst_count, from_to, pair_count);
|
||||||
|
@ -60,7 +60,7 @@ template<typename T> static inline Scalar rawToScalar(const T& v)
|
|||||||
\****************************************************************************************/
|
\****************************************************************************************/
|
||||||
|
|
||||||
template<typename T, typename ST>
|
template<typename T, typename ST>
|
||||||
static size_t sum_(const T* src0, const uchar* mask, ST* dst, int len, int cn )
|
static int sum_(const T* src0, const uchar* mask, ST* dst, int len, int cn )
|
||||||
{
|
{
|
||||||
const T* src = src0;
|
const T* src = src0;
|
||||||
if( !mask )
|
if( !mask )
|
||||||
@ -537,7 +537,7 @@ void cv::meanStdDev( const InputArray& _src, OutputArray _mean, OutputArray _sdv
|
|||||||
const Mat* arrays[] = {&src, &mask, 0};
|
const Mat* arrays[] = {&src, &mask, 0};
|
||||||
uchar* ptrs[2];
|
uchar* ptrs[2];
|
||||||
NAryMatIterator it(arrays, ptrs);
|
NAryMatIterator it(arrays, ptrs);
|
||||||
int total = it.size, blockSize = total, intSumBlockSize = 0;
|
int total = (int)it.size, blockSize = total, intSumBlockSize = 0;
|
||||||
int j, count = 0, nz0 = 0;
|
int j, count = 0, nz0 = 0;
|
||||||
AutoBuffer<double> _buf(cn*4);
|
AutoBuffer<double> _buf(cn*4);
|
||||||
double *s = (double*)_buf, *sq = s + cn;
|
double *s = (double*)_buf, *sq = s + cn;
|
||||||
@ -954,11 +954,11 @@ normDiffL2_(const T* src1, const T* src2, const uchar* mask, ST* _result, int le
|
|||||||
|
|
||||||
|
|
||||||
#define CV_DEF_NORM_FUNC(L, suffix, type, ntype) \
|
#define CV_DEF_NORM_FUNC(L, suffix, type, ntype) \
|
||||||
static int norm##L##_##suffix(const type* src, const uchar* mask, ntype* r, size_t len, int cn) \
|
static int norm##L##_##suffix(const type* src, const uchar* mask, ntype* r, int len, int cn) \
|
||||||
{ return norm##L##_(src, mask, r, len, cn); } \
|
{ return norm##L##_(src, mask, r, len, cn); } \
|
||||||
static int normDiff##L##_##suffix(const type* src1, const type* src2, \
|
static int normDiff##L##_##suffix(const type* src1, const type* src2, \
|
||||||
const uchar* mask, ntype* r, size_t len, int cn) \
|
const uchar* mask, ntype* r, int len, int cn) \
|
||||||
{ return normDiff##L##_(src1, src2, mask, r, len, cn); }
|
{ return normDiff##L##_(src1, src2, mask, r, (int)len, cn); }
|
||||||
|
|
||||||
#define CV_DEF_NORM_ALL(suffix, type, inftype, l1type, l2type) \
|
#define CV_DEF_NORM_ALL(suffix, type, inftype, l1type, l2type) \
|
||||||
CV_DEF_NORM_FUNC(Inf, suffix, type, inftype) \
|
CV_DEF_NORM_FUNC(Inf, suffix, type, inftype) \
|
||||||
|
@ -162,7 +162,7 @@ void DescriptorMatcher::DescriptorCollection::getLocalIdx( int globalDescIdx, in
|
|||||||
CV_Assert( (globalDescIdx>=0) && (globalDescIdx < size()) );
|
CV_Assert( (globalDescIdx>=0) && (globalDescIdx < size()) );
|
||||||
std::vector<int>::const_iterator img_it = std::upper_bound(startIdxs.begin(), startIdxs.end(), globalDescIdx);
|
std::vector<int>::const_iterator img_it = std::upper_bound(startIdxs.begin(), startIdxs.end(), globalDescIdx);
|
||||||
--img_it;
|
--img_it;
|
||||||
imgIdx = img_it - startIdxs.begin();
|
imgIdx = (int)(img_it - startIdxs.begin());
|
||||||
localDescIdx = globalDescIdx - (*img_it);
|
localDescIdx = globalDescIdx - (*img_it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1485,14 +1485,14 @@ void cv::findContours( const InputOutputArray _image, OutputArrayOfArrays _conto
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Seq<CvSeq*> all_contours(cvTreeToNodeSeq( _ccontours, sizeof(CvSeq), storage ));
|
Seq<CvSeq*> all_contours(cvTreeToNodeSeq( _ccontours, sizeof(CvSeq), storage ));
|
||||||
size_t i, total = all_contours.size();
|
int i, total = (int)all_contours.size();
|
||||||
_contours.create(total, 1, 0, -1, true);
|
_contours.create(total, 1, 0, -1, true);
|
||||||
SeqIterator<CvSeq*> it = all_contours.begin();
|
SeqIterator<CvSeq*> it = all_contours.begin();
|
||||||
for( i = 0; i < total; i++, ++it )
|
for( i = 0; i < total; i++, ++it )
|
||||||
{
|
{
|
||||||
CvSeq* c = *it;
|
CvSeq* c = *it;
|
||||||
((CvContour*)c)->color = (int)i;
|
((CvContour*)c)->color = (int)i;
|
||||||
_contours.create(c->total, 1, CV_32SC2, i, true);
|
_contours.create((int)c->total, 1, CV_32SC2, i, true);
|
||||||
Mat ci = _contours.getMat(i);
|
Mat ci = _contours.getMat(i);
|
||||||
CV_Assert( ci.isContinuous() );
|
CV_Assert( ci.isContinuous() );
|
||||||
cvCvtSeqToArray(c, ci.data);
|
cvCvtSeqToArray(c, ci.data);
|
||||||
@ -1583,7 +1583,7 @@ void cv::drawContours( InputOutputArray _image, const InputArrayOfArrays& _conto
|
|||||||
|
|
||||||
for( i = first; i < last; i++ )
|
for( i = first; i < last; i++ )
|
||||||
{
|
{
|
||||||
Mat ci = _contours.getMat(i);
|
Mat ci = _contours.getMat((int)i);
|
||||||
if( ci.empty() )
|
if( ci.empty() )
|
||||||
continue;
|
continue;
|
||||||
int npoints = ci.checkVector(2, CV_32S);
|
int npoints = ci.checkVector(2, CV_32S);
|
||||||
|
Loading…
Reference in New Issue
Block a user