fixed most of the failures in opencv_test
This commit is contained in:
@@ -620,14 +620,14 @@ CV_IMPL int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
|
||||
result = estimator.run7Point(m1, m2, &_F9x3);
|
||||
else if( count == 8 || method == CV_FM_8POINT )
|
||||
result = estimator.run8Point(m1, m2, &_F3x3);
|
||||
else if( count > 8 )
|
||||
else if( count >= 8 )
|
||||
{
|
||||
if( param1 <= 0 )
|
||||
param1 = 3;
|
||||
if( param2 < DBL_EPSILON || param2 > 1 - DBL_EPSILON )
|
||||
param2 = 0.99;
|
||||
|
||||
if( (method & ~3) == CV_RANSAC )
|
||||
if( (method & ~3) == CV_RANSAC && count >= 15 )
|
||||
result = estimator.runRANSAC(m1, m2, &_F3x3, tempMask, param1, param2 );
|
||||
else
|
||||
result = estimator.runLMeDS(m1, m2, &_F3x3, tempMask, param2 );
|
||||
|
@@ -261,7 +261,7 @@ bool CvModelEstimator2::runLMeDS( const CvMat* m1, const CvMat* m2, CvMat* model
|
||||
if( minMedian < DBL_MAX )
|
||||
{
|
||||
sigma = 2.5*1.4826*(1 + 5./(count - modelPoints))*sqrt(minMedian);
|
||||
sigma = MAX( sigma, FLT_EPSILON*100 );
|
||||
sigma = MAX( sigma, 0.001 );
|
||||
|
||||
count = findInliers( m1, m2, model, err, mask, sigma );
|
||||
result = count >= modelPoints;
|
||||
|
@@ -2081,12 +2081,11 @@ void scaleAdd( const Mat& src1, double alpha, const Mat& src2, Mat& dst )
|
||||
float* d = (float*)dst.data;
|
||||
size_t step1 = src1.step/sizeof(s1[0]), step2 = src2.step/sizeof(s2[0]);
|
||||
size_t step = dst.step/sizeof(d[0]);
|
||||
float a = (float)alpha;
|
||||
|
||||
if( size.width == 1 )
|
||||
{
|
||||
for( ; size.height--; s1 += step1, s2 += step2, d += step )
|
||||
d[0] = s1[0]*a + s2[0];
|
||||
d[0] = (float)(s1[0]*alpha + s2[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2095,18 +2094,18 @@ void scaleAdd( const Mat& src1, double alpha, const Mat& src2, Mat& dst )
|
||||
int i;
|
||||
for( i = 0; i <= size.width - 4; i += 4 )
|
||||
{
|
||||
float t0 = s1[i]*a + s2[i];
|
||||
float t1 = s1[i+1]*a + s2[i+1];
|
||||
float t0 = (float)(s1[i]*alpha + s2[i]);
|
||||
float t1 = (float)(s1[i+1]*alpha + s2[i+1]);
|
||||
d[i] = t0;
|
||||
d[i+1] = t1;
|
||||
t0 = s1[i+2]*a + s2[i+2];
|
||||
t1 = s1[i+3]*a + s2[i+3];
|
||||
t0 = (float)(s1[i+2]*alpha + s2[i+2]);
|
||||
t1 = (float)(s1[i+3]*alpha + s2[i+3]);
|
||||
d[i+2] = t0;
|
||||
d[i+3] = t1;
|
||||
}
|
||||
|
||||
for( ; i < size.width; i++ )
|
||||
d[i] = s1[i]*a + s2[i];
|
||||
d[i] = (float)(s1[i]*alpha + s2[i]);
|
||||
}
|
||||
}
|
||||
else if( depth == CV_64F )
|
||||
@@ -2225,12 +2224,13 @@ double Mahalanobis( const Mat& v1, const Mat& v2, const Mat& icovar )
|
||||
int type = v1.type(), depth = v1.depth();
|
||||
Size sz = v1.size();
|
||||
int i, j, len = sz.width*sz.height*v1.channels();
|
||||
AutoBuffer<uchar> buf(len*v1.elemSize());
|
||||
AutoBuffer<double> buf(len);
|
||||
double result = 0;
|
||||
|
||||
CV_Assert( type == v2.type() && type == icovar.type() &&
|
||||
sz == v2.size() && len == icovar.rows && len == icovar.cols );
|
||||
|
||||
sz.width *= v1.channels();
|
||||
if( v1.isContinuous() && v2.isContinuous() )
|
||||
{
|
||||
sz.width *= sz.height;
|
||||
@@ -2243,7 +2243,7 @@ double Mahalanobis( const Mat& v1, const Mat& v2, const Mat& icovar )
|
||||
const float* src2 = (const float*)v2.data;
|
||||
size_t step1 = v1.step/sizeof(src1[0]);
|
||||
size_t step2 = v2.step/sizeof(src2[0]);
|
||||
float* diff = (float*)(uchar*)buf;
|
||||
double* diff = buf;
|
||||
const float* mat = (const float*)icovar.data;
|
||||
size_t matstep = icovar.step/sizeof(mat[0]);
|
||||
|
||||
@@ -2253,7 +2253,7 @@ double Mahalanobis( const Mat& v1, const Mat& v2, const Mat& icovar )
|
||||
diff[i] = src1[i] - src2[i];
|
||||
}
|
||||
|
||||
diff = (float*)(uchar*)buf;
|
||||
diff = buf;
|
||||
for( i = 0; i < len; i++, mat += matstep )
|
||||
{
|
||||
double row_sum = 0;
|
||||
@@ -2271,7 +2271,7 @@ double Mahalanobis( const Mat& v1, const Mat& v2, const Mat& icovar )
|
||||
const double* src2 = (const double*)v2.data;
|
||||
size_t step1 = v1.step/sizeof(src1[0]);
|
||||
size_t step2 = v2.step/sizeof(src2[0]);
|
||||
double* diff = (double*)(uchar*)buf;
|
||||
double* diff = buf;
|
||||
const double* mat = (const double*)icovar.data;
|
||||
size_t matstep = icovar.step/sizeof(mat[0]);
|
||||
|
||||
@@ -2281,7 +2281,7 @@ double Mahalanobis( const Mat& v1, const Mat& v2, const Mat& icovar )
|
||||
diff[i] = src1[i] - src2[i];
|
||||
}
|
||||
|
||||
diff = (double*)(uchar*)buf;
|
||||
diff = buf;
|
||||
for( i = 0; i < len; i++, mat += matstep )
|
||||
{
|
||||
double row_sum = 0;
|
||||
@@ -2372,7 +2372,7 @@ MulTransposedR( const Mat& srcmat, Mat& dstmat, const Mat& deltamat, double scal
|
||||
const sT *tsrc = src + j;
|
||||
|
||||
for( k = 0; k < size.height; k++, tsrc += srcstep )
|
||||
s0 += col_buf[k] * tsrc[0];
|
||||
s0 += (double)col_buf[k] * tsrc[0];
|
||||
|
||||
tdst[j] = (dT)(s0*scale);
|
||||
}
|
||||
@@ -2415,7 +2415,7 @@ MulTransposedR( const Mat& srcmat, Mat& dstmat, const Mat& deltamat, double scal
|
||||
const dT *d = delta_buf ? delta_buf : delta + j;
|
||||
|
||||
for( k = 0; k < size.height; k++, tsrc+=srcstep, d+=deltastep )
|
||||
s0 += col_buf[k] * (tsrc[0] - d[0]);
|
||||
s0 += (double)col_buf[k] * (tsrc[0] - d[0]);
|
||||
|
||||
tdst[j] = (dT)(s0*scale);
|
||||
}
|
||||
@@ -2446,10 +2446,10 @@ MulTransposedL( const Mat& srcmat, Mat& dstmat, const Mat& deltamat, double scal
|
||||
const sT *tsrc2 = src + j*srcstep;
|
||||
|
||||
for( k = 0; k <= size.width - 4; k += 4 )
|
||||
s += tsrc1[k]*tsrc2[k] + tsrc1[k+1]*tsrc2[k+1] +
|
||||
tsrc1[k+2]*tsrc2[k+2] + tsrc1[k+3]*tsrc2[k+3];
|
||||
s += (double)tsrc1[k]*tsrc2[k] + (double)tsrc1[k+1]*tsrc2[k+1] +
|
||||
(double)tsrc1[k+2]*tsrc2[k+2] + (double)tsrc1[k+3]*tsrc2[k+3];
|
||||
for( ; k < size.width; k++ )
|
||||
s += tsrc1[k] * tsrc2[k];
|
||||
s += (double)tsrc1[k] * tsrc2[k];
|
||||
tdst[j] = (dT)(s*scale);
|
||||
}
|
||||
else
|
||||
@@ -2483,12 +2483,12 @@ MulTransposedL( const Mat& srcmat, Mat& dstmat, const Mat& deltamat, double scal
|
||||
tdelta2 = delta_buf;
|
||||
}
|
||||
for( k = 0; k <= size.width-4; k += 4, tdelta2 += delta_shift )
|
||||
s += row_buf[k]*(tsrc2[k] - tdelta2[0]) +
|
||||
row_buf[k+1]*(tsrc2[k+1] - tdelta2[1]) +
|
||||
row_buf[k+2]*(tsrc2[k+2] - tdelta2[2]) +
|
||||
row_buf[k+3]*(tsrc2[k+3] - tdelta2[3]);
|
||||
s += (double)row_buf[k]*(tsrc2[k] - tdelta2[0]) +
|
||||
(double)row_buf[k+1]*(tsrc2[k+1] - tdelta2[1]) +
|
||||
(double)row_buf[k+2]*(tsrc2[k+2] - tdelta2[2]) +
|
||||
(double)row_buf[k+3]*(tsrc2[k+3] - tdelta2[3]);
|
||||
for( ; k < size.width; k++, tdelta2++ )
|
||||
s += row_buf[k]*(tsrc2[k] - tdelta2[0]);
|
||||
s += (double)row_buf[k]*(tsrc2[k] - tdelta2[0]);
|
||||
tdst[j] = (dT)(s*scale);
|
||||
}
|
||||
}
|
||||
|
@@ -445,7 +445,7 @@ CV_INLINE CvSubdiv2DPoint* cvSubdiv2DEdgeDst( CvSubdiv2DEdge edge )
|
||||
|
||||
CV_INLINE double cvTriangleArea( CvPoint2D32f a, CvPoint2D32f b, CvPoint2D32f c )
|
||||
{
|
||||
return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
|
||||
return ((double)b.x - a.x) * ((double)c.y - a.y) - ((double)b.y - a.y) * ((double)c.x - a.x);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -2879,14 +2879,14 @@ Ptr<BaseFilter> getLinearFilter(int srcType, int dstType,
|
||||
|
||||
anchor = normalizeAnchor(anchor, _kernel.size());
|
||||
|
||||
if( sdepth == CV_8U && ddepth == CV_8U && kdepth == CV_32S )
|
||||
/*if( sdepth == CV_8U && ddepth == CV_8U && kdepth == CV_32S )
|
||||
return Ptr<BaseFilter>(new Filter2D<uchar, FixedPtCastEx<int, uchar>, FilterVec_8u>
|
||||
(_kernel, anchor, delta, FixedPtCastEx<int, uchar>(bits),
|
||||
FilterVec_8u(_kernel, bits, delta)));
|
||||
if( sdepth == CV_8U && ddepth == CV_16S && kdepth == CV_32S )
|
||||
return Ptr<BaseFilter>(new Filter2D<uchar, FixedPtCastEx<int, short>, FilterVec_8u16s>
|
||||
(_kernel, anchor, delta, FixedPtCastEx<int, short>(bits),
|
||||
FilterVec_8u16s(_kernel, bits, delta)));
|
||||
FilterVec_8u16s(_kernel, bits, delta)));*/
|
||||
|
||||
kdepth = sdepth == CV_64F || ddepth == CV_64F ? CV_64F : CV_32F;
|
||||
Mat kernel;
|
||||
@@ -2952,21 +2952,21 @@ Ptr<FilterEngine> createLinearFilter( int _srcType, int _dstType, const Mat& _ke
|
||||
const Scalar& _borderValue )
|
||||
{
|
||||
_srcType = CV_MAT_TYPE(_srcType);
|
||||
_dstType = CV_MAT_TYPE(_dstType);
|
||||
int sdepth = CV_MAT_DEPTH(_srcType), ddepth = CV_MAT_DEPTH(_dstType);
|
||||
_dstType = CV_MAT_TYPE(_dstType);
|
||||
int cn = CV_MAT_CN(_srcType);
|
||||
CV_Assert( cn == CV_MAT_CN(_dstType) );
|
||||
|
||||
Mat kernel = _kernel;
|
||||
int ktype = _kernel.depth() == CV_32S ? KERNEL_INTEGER : getKernelType(_kernel, _anchor);
|
||||
int bits = 0;
|
||||
|
||||
/*int sdepth = CV_MAT_DEPTH(_srcType), ddepth = CV_MAT_DEPTH(_dstType);
|
||||
int ktype = _kernel.depth() == CV_32S ? KERNEL_INTEGER : getKernelType(_kernel, _anchor);
|
||||
if( sdepth == CV_8U && (ddepth == CV_8U || ddepth == CV_16S) &&
|
||||
_kernel.rows*_kernel.cols <= (1 << 10) )
|
||||
{
|
||||
bits = (ktype & KERNEL_INTEGER) ? 0 : 11;
|
||||
_kernel.convertTo(kernel, CV_32S, 1 << bits);
|
||||
}
|
||||
}*/
|
||||
|
||||
Ptr<BaseFilter> _filter2D = getLinearFilter(_srcType, _dstType,
|
||||
kernel, _anchor, _delta, bits);
|
||||
|
@@ -189,10 +189,9 @@ static int
|
||||
icvIsRightOf( CvPoint2D32f& pt, CvSubdiv2DEdge edge )
|
||||
{
|
||||
CvSubdiv2DPoint *org = cvSubdiv2DEdgeOrg(edge), *dst = cvSubdiv2DEdgeDst(edge);
|
||||
Cv32suf cw_area;
|
||||
cw_area.f = (float)cvTriangleArea( pt, dst->pt, org->pt );
|
||||
double cw_area = cvTriangleArea( pt, dst->pt, org->pt );
|
||||
|
||||
return (cw_area.i > 0)*2 - (cw_area.i*2 != 0);
|
||||
return (cw_area > 0) - (cw_area < 0);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -271,7 +271,7 @@ cvCalcGlobalOrientation( const void* orientation, const void* maskimg, const voi
|
||||
|
||||
// find the maximum index (the dominant orientation)
|
||||
cvGetMinMaxHistValue( hist, 0, 0, 0, &base_orient );
|
||||
base_orient *= 360/hist_size;
|
||||
base_orient = cvRound(base_orient*360./hist_size);
|
||||
|
||||
// override timestamp with the maximum value in MHI
|
||||
cvMinMaxLoc( mhi, 0, &curr_mhi_timestamp, 0, 0, mask );
|
||||
@@ -325,7 +325,7 @@ cvCalcGlobalOrientation( const void* orientation, const void* maskimg, const voi
|
||||
rel_angle += (rel_angle < -180 ? 360 : 0);
|
||||
rel_angle += (rel_angle > 180 ? -360 : 0);
|
||||
|
||||
if( abs(rel_angle) < 90 )
|
||||
if( abs(rel_angle) < 45 )
|
||||
{
|
||||
shift_orient += weight * rel_angle;
|
||||
shift_weight += weight;
|
||||
|
Reference in New Issue
Block a user