Commit c05595e4 authored by Alexander Alekhin's avatar Alexander Alekhin

Merge pull request #15382 from alalek:fix_15287

parents d4d7ab06 5a497077
...@@ -68,6 +68,7 @@ enum {DESCR_FORMAT_COL_BY_COL, DESCR_FORMAT_ROW_BY_ROW}; ...@@ -68,6 +68,7 @@ enum {DESCR_FORMAT_COL_BY_COL, DESCR_FORMAT_ROW_BY_ROW};
static int numPartsWithin(int size, int part_size, int stride) static int numPartsWithin(int size, int part_size, int stride)
{ {
CV_Assert(stride != 0);
return (size - part_size + stride) / stride; return (size - part_size + stride) / stride;
} }
...@@ -80,13 +81,17 @@ static Size numPartsWithin(cv::Size size, cv::Size part_size, ...@@ -80,13 +81,17 @@ static Size numPartsWithin(cv::Size size, cv::Size part_size,
static size_t getBlockHistogramSize(Size block_size, Size cell_size, int nbins) static size_t getBlockHistogramSize(Size block_size, Size cell_size, int nbins)
{ {
CV_Assert(!cell_size.empty());
Size cells_per_block = Size(block_size.width / cell_size.width, Size cells_per_block = Size(block_size.width / cell_size.width,
block_size.height / cell_size.height); block_size.height / cell_size.height);
return (size_t)(nbins * cells_per_block.area()); return (size_t)(nbins * cells_per_block.area());
} }
size_t HOGDescriptor::getDescriptorSize() const size_t HOGDescriptor::getDescriptorSize() const
{ {
CV_Assert(!cellSize.empty());
CV_Assert(!blockStride.empty());
CV_Assert(blockSize.width % cellSize.width == 0 && CV_Assert(blockSize.width % cellSize.width == 0 &&
blockSize.height % cellSize.height == 0); blockSize.height % cellSize.height == 0);
CV_Assert((winSize.width - blockSize.width) % blockStride.width == 0 && CV_Assert((winSize.width - blockSize.width) % blockStride.width == 0 &&
...@@ -144,20 +149,20 @@ bool HOGDescriptor::read(FileNode& obj) ...@@ -144,20 +149,20 @@ bool HOGDescriptor::read(FileNode& obj)
if( !obj.isMap() ) if( !obj.isMap() )
return false; return false;
FileNodeIterator it = obj["winSize"].begin(); FileNodeIterator it = obj["winSize"].begin();
it >> winSize.width >> winSize.height; it >> winSize.width >> winSize.height; CV_Assert(!winSize.empty());
it = obj["blockSize"].begin(); it = obj["blockSize"].begin();
it >> blockSize.width >> blockSize.height; it >> blockSize.width >> blockSize.height; CV_Assert(!blockSize.empty());
it = obj["blockStride"].begin(); it = obj["blockStride"].begin();
it >> blockStride.width >> blockStride.height; it >> blockStride.width >> blockStride.height; CV_Assert(!blockStride.empty());
it = obj["cellSize"].begin(); it = obj["cellSize"].begin();
it >> cellSize.width >> cellSize.height; it >> cellSize.width >> cellSize.height; CV_Assert(!cellSize.empty());
obj["nbins"] >> nbins; obj["nbins"] >> nbins; CV_Assert(nbins > 0);
obj["derivAperture"] >> derivAperture; obj["derivAperture"] >> derivAperture;
obj["winSigma"] >> winSigma; obj["winSigma"] >> winSigma;
obj["histogramNormType"] >> histogramNormType; obj["histogramNormType"] >> histogramNormType;
obj["L2HysThreshold"] >> L2HysThreshold; obj["L2HysThreshold"] >> L2HysThreshold;
obj["gammaCorrection"] >> gammaCorrection; obj["gammaCorrection"] >> gammaCorrection;
obj["nlevels"] >> nlevels; obj["nlevels"] >> nlevels; CV_Assert(nlevels > 0);
if (obj["signedGradient"].empty()) if (obj["signedGradient"].empty())
signedGradient = false; signedGradient = false;
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment