mirror of
https://github.com/kerberos-io/openalpr-base.git
synced 2025-10-06 01:07:42 +08:00
Added segment/segmentationgroup
This commit is contained in:
50
src/openalpr/segmentation/segment.cpp
Normal file
50
src/openalpr/segmentation/segment.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (c) 2013 New Designs Unlimited, LLC
|
||||
* Opensource Automated License Plate Recognition [http://www.openalpr.com]
|
||||
*
|
||||
* This file is part of OpenAlpr.
|
||||
*
|
||||
* OpenAlpr is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License
|
||||
* version 3 as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "segment.h"
|
||||
|
||||
Segment::Segment(cv::Rect newSegment)
|
||||
{
|
||||
this->segment = newSegment;
|
||||
}
|
||||
|
||||
Segment::~Segment()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool Segment::matches(cv::Rect newSegment)
|
||||
{
|
||||
// Compare the two segments with a given leniency
|
||||
const float WIDTH_LENIENCY_MIN = 0.25;
|
||||
const float WIDTH_LENIENCY_MAX = 0.20;
|
||||
|
||||
float left_min = segment.x - (((float)segment.width) * WIDTH_LENIENCY_MIN);
|
||||
float left_max = segment.x + (((float)segment.width) * WIDTH_LENIENCY_MAX);
|
||||
float right_min = (segment.x + segment.width) - (((float)segment.width) * WIDTH_LENIENCY_MIN);
|
||||
float right_max = (segment.x + segment.width) + (((float)segment.width) * WIDTH_LENIENCY_MAX);
|
||||
|
||||
int newSegRight = newSegment.x + newSegment.width;
|
||||
if (newSegment.x >= left_min && newSegment.x <= left_max &&
|
||||
newSegRight >= right_min && newSegRight <= right_max)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
41
src/openalpr/segmentation/segment.h
Normal file
41
src/openalpr/segmentation/segment.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2013 New Designs Unlimited, LLC
|
||||
* Opensource Automated License Plate Recognition [http://www.openalpr.com]
|
||||
*
|
||||
* This file is part of OpenAlpr.
|
||||
*
|
||||
* OpenAlpr is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License
|
||||
* version 3 as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef OPENALPR_SEGMENT_H
|
||||
#define OPENALPR_SEGMENT_H
|
||||
|
||||
#include <vector>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "opencv2/imgproc/imgproc.hpp"
|
||||
|
||||
class Segment
|
||||
{
|
||||
|
||||
public:
|
||||
Segment(cv::Rect newSegment);
|
||||
virtual ~Segment();
|
||||
|
||||
cv::Rect segment;
|
||||
|
||||
bool matches(cv::Rect newSegment);
|
||||
|
||||
};
|
||||
|
||||
#endif // OPENALPR_SEGMENTATIONGROUP_H
|
49
src/openalpr/segmentation/segmentationgroup.cpp
Normal file
49
src/openalpr/segmentation/segmentationgroup.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2013 New Designs Unlimited, LLC
|
||||
* Opensource Automated License Plate Recognition [http://www.openalpr.com]
|
||||
*
|
||||
* This file is part of OpenAlpr.
|
||||
*
|
||||
* OpenAlpr is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License
|
||||
* version 3 as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "segmentationgroup.h"
|
||||
|
||||
SegmentationGroup::SegmentationGroup()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
SegmentationGroup::~SegmentationGroup()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SegmentationGroup::add(int segmentID)
|
||||
{
|
||||
this->segmentIDs.push_back(segmentID);
|
||||
}
|
||||
|
||||
bool SegmentationGroup::equals(SegmentationGroup otherGroup)
|
||||
{
|
||||
if (segmentIDs.size() != otherGroup.segmentIDs.size())
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < segmentIDs.size(); i++)
|
||||
{
|
||||
if (otherGroup.segmentIDs[i] != segmentIDs[i])
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
50
src/openalpr/segmentation/segmentationgroup.h
Normal file
50
src/openalpr/segmentation/segmentationgroup.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (c) 2013 New Designs Unlimited, LLC
|
||||
* Opensource Automated License Plate Recognition [http://www.openalpr.com]
|
||||
*
|
||||
* This file is part of OpenAlpr.
|
||||
*
|
||||
* OpenAlpr is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License
|
||||
* version 3 as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef OPENALPR_SEGMENTATIONGROUP_H
|
||||
#define OPENALPR_SEGMENTATIONGROUP_H
|
||||
|
||||
#include <vector>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "opencv2/imgproc/imgproc.hpp"
|
||||
|
||||
#include "segment.h"
|
||||
|
||||
|
||||
class SegmentationGroup
|
||||
{
|
||||
|
||||
public:
|
||||
SegmentationGroup();
|
||||
virtual ~SegmentationGroup();
|
||||
|
||||
void add(int segmentID);
|
||||
|
||||
std::vector<int> segmentIDs;
|
||||
|
||||
bool equals(SegmentationGroup otherGroup);
|
||||
|
||||
|
||||
private:
|
||||
float strength; // Debuggin purposes -- how many threshold segmentations match this one perfectly
|
||||
|
||||
};
|
||||
|
||||
#endif // OPENALPR_SEGMENTATIONGROUP_H
|
Reference in New Issue
Block a user