mirror of
https://github.com/kerberos-io/openalpr-base.git
synced 2025-10-06 07:16:56 +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