mirror of
https://github.com/opencv/opencv.git
synced 2025-06-17 23:51:16 +08:00
Merge pull request #15382 from alalek:fix_15287
This commit is contained in:
commit
c05595e482
@ -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,6 +81,7 @@ 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());
|
||||||
@ -87,6 +89,9 @@ static size_t getBlockHistogramSize(Size block_size, Size cell_size, int nbins)
|
|||||||
|
|
||||||
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)
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user