fix rounding bug in Level creation

pull/158/head
marina.kolpakova 12 years ago
parent 2bcb8dbd83
commit 022a8b9698
  1. 11
      modules/gpu/src/icf.hpp
  2. 2
      modules/gpu/src/imgproc.cpp
  3. 12
      modules/gpu/src/softcascade.cpp

@ -81,16 +81,7 @@ struct __align__(8) Level //is actually 24 bytes
uchar2 workRect; uchar2 workRect;
uchar2 objSize; uchar2 objSize;
Level(int idx, const Octave& oct, const float scale, const int w, const int h) Level(int idx, const Octave& oct, const float scale, const int w, const int h);
: octave(idx), relScale(scale / oct.scale), shrScale (relScale / (float)oct.shrinkage)
{
workRect.x = round(w / (float)oct.shrinkage);
workRect.y = round(h / (float)oct.shrinkage);
objSize.x = round(oct.size.x * relScale);
objSize.y = round(oct.size.y * relScale);
}
__device Level(){} __device Level(){}
}; };

@ -553,7 +553,7 @@ void cv::gpu::integralBuffered(const GpuMat& src, GpuMat& sum, GpuMat& buffer, S
src.locateROI(whole, offset); src.locateROI(whole, offset);
if (info.supports(WARP_SHUFFLE_FUNCTIONS) && src.cols <= 2048) if (false && info.supports(WARP_SHUFFLE_FUNCTIONS) && src.cols <= 2048)
{ {
GpuMat srcAlligned; GpuMat srcAlligned;

@ -65,6 +65,16 @@ cv::Size cv::gpu::SoftCascade::getRoiSize() const { throw_nogpu(); return cv::Si
#include <icf.hpp> #include <icf.hpp>
cv::gpu::device::icf::Level::Level(int idx, const Octave& oct, const float scale, const int w, const int h)
: octave(idx), relScale(scale / oct.scale), shrScale (relScale / (float)oct.shrinkage)
{
workRect.x = round(w / (float)oct.shrinkage);
workRect.y = round(h / (float)oct.shrinkage);
objSize.x = cv::saturate_cast<uchar>(oct.size.x * relScale);
objSize.y = cv::saturate_cast<uchar>(oct.size.y * relScale);
}
namespace cv { namespace gpu { namespace device { namespace cv { namespace gpu { namespace device {
namespace icf { namespace icf {
void fillBins(cv::gpu::PtrStepSzb hogluv, const cv::gpu::PtrStepSzf& nangle, void fillBins(cv::gpu::PtrStepSzb hogluv, const cv::gpu::PtrStepSzf& nangle,
@ -72,7 +82,7 @@ namespace icf {
} }
namespace imgproc namespace imgproc
{ {
void meanShiftFiltering_gpu(const PtrStepSzb& src, PtrStepSzb dst, int sp, int sr, int maxIter, float eps, cudaStream_t stream); void shfl_integral_gpu(PtrStepSzb img, PtrStepSz<unsigned int> integral, cudaStream_t stream);
} }
}}} }}}

Loading…
Cancel
Save