Implementation of bit-exact resize. Internal calls to linear resize updated to use bit-exact version. (#9468)
This commit is contained in:
committed by
Vadim Pisarevsky
parent
84ee4d701a
commit
51cb56ef2c
@@ -511,7 +511,7 @@ bool FeatureEvaluator::setImage( InputArray _image, const std::vector<float>& _s
|
||||
{
|
||||
const ScaleData& s = scaleData->at(i);
|
||||
UMat dst(urbuf, Rect(0, 0, s.szi.width - 1, s.szi.height - 1));
|
||||
resize(_image, dst, dst.size(), 1. / s.scale, 1. / s.scale, INTER_LINEAR);
|
||||
resize(_image, dst, dst.size(), 1. / s.scale, 1. / s.scale, INTER_LINEAR_EXACT);
|
||||
computeChannels((int)i, dst);
|
||||
}
|
||||
sbufFlag = USBUF_VALID;
|
||||
@@ -526,7 +526,7 @@ bool FeatureEvaluator::setImage( InputArray _image, const std::vector<float>& _s
|
||||
{
|
||||
const ScaleData& s = scaleData->at(i);
|
||||
Mat dst(s.szi.height - 1, s.szi.width - 1, CV_8U, rbuf.ptr());
|
||||
resize(image, dst, dst.size(), 1. / s.scale, 1. / s.scale, INTER_LINEAR);
|
||||
resize(image, dst, dst.size(), 1. / s.scale, 1. / s.scale, INTER_LINEAR_EXACT);
|
||||
computeChannels((int)i, dst);
|
||||
}
|
||||
sbufFlag = SBUF_VALID;
|
||||
|
||||
@@ -1323,7 +1323,7 @@ cvHaarDetectObjectsForROC( const CvArr* _img,
|
||||
norm1 = cvMat( sz1.height, sz1.width, CV_32FC1, normImg ? normImg->data.ptr : 0 );
|
||||
mask1 = cvMat( sz1.height, sz1.width, CV_8UC1, temp->data.ptr );
|
||||
|
||||
cvResize( img, &img1, CV_INTER_LINEAR );
|
||||
cvResize( img, &img1, cv::INTER_LINEAR_EXACT );
|
||||
cvIntegral( &img1, &sum1, &sqsum1, _tilted );
|
||||
|
||||
int ystep = factor > 2 ? 1 : 2;
|
||||
|
||||
@@ -1814,7 +1814,7 @@ public:
|
||||
if( sz == img.size() )
|
||||
smallerImg = Mat(sz, img.type(), img.data, img.step);
|
||||
else
|
||||
resize(img, smallerImg, sz);
|
||||
resize(img, smallerImg, sz, 0, 0, INTER_LINEAR_EXACT);
|
||||
hog->detect(smallerImg, locations, hitsWeights, hitThreshold, winStride, padding);
|
||||
Size scaledWinSize = Size(cvRound(hog->winSize.width*scale), cvRound(hog->winSize.height*scale));
|
||||
|
||||
@@ -2031,7 +2031,7 @@ static bool ocl_detectMultiScale(InputArray _img, std::vector<Rect> &found_locat
|
||||
}
|
||||
else
|
||||
{
|
||||
resize(_img, image_scale, effect_size);
|
||||
resize(_img, image_scale, effect_size, 0, 0, INTER_LINEAR_EXACT);
|
||||
if(!ocl_detect(image_scale, locations, hit_threshold, win_stride, oclSvmDetector, blockSize, cellSize, nbins,
|
||||
blockStride, winSize, gammaCorrection, L2HysThreshold, sigma, free_coef, signedGradient))
|
||||
return false;
|
||||
@@ -3525,7 +3525,7 @@ public:
|
||||
if( sz == img.size() )
|
||||
smallerImg = Mat(sz, img.type(), img.data, img.step);
|
||||
else
|
||||
resize(img, smallerImg, sz);
|
||||
resize(img, smallerImg, sz, 0, 0, INTER_LINEAR_EXACT);
|
||||
|
||||
hog->detectROI(smallerImg, (*locations)[i].locations, dets, (*locations)[i].confidences, hitThreshold, Size(), padding);
|
||||
Size scaledWinSize = Size(cvRound(hog->winSize.width*scale), cvRound(hog->winSize.height*scale));
|
||||
|
||||
Reference in New Issue
Block a user