Visual Servoing Platform
version 3.3.0
vpDetectorBase.cpp
1
/****************************************************************************
2
*
3
* ViSP, open source Visual Servoing Platform software.
4
* Copyright (C) 2005 - 2019 by Inria. All rights reserved.
5
*
6
* This software is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
* See the file LICENSE.txt at the root directory of this source
11
* distribution for additional information about the GNU GPL.
12
*
13
* For using ViSP with software that can not be combined with the GNU
14
* GPL, please contact Inria about acquiring a ViSP Professional
15
* Edition License.
16
*
17
* See http://visp.inria.fr for more information.
18
*
19
* This software was developed at:
20
* Inria Rennes - Bretagne Atlantique
21
* Campus Universitaire de Beaulieu
22
* 35042 Rennes Cedex
23
* France
24
*
25
* If you have questions regarding the use of this file, please contact
26
* Inria at visp@inria.fr
27
*
28
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30
*
31
* Description:
32
* Base class for object detection.
33
*
34
* Authors:
35
* Fabien Spindler
36
*
37
*****************************************************************************/
38
#include <visp3/core/vpConfig.h>
39
40
#include <visp3/detection/vpDetectorBase.h>
41
45
vpDetectorBase::vpDetectorBase
() : m_polygon(), m_message(), m_nb_objects(0), m_timeout_ms(0) {}
46
47
vpDetectorBase::vpDetectorBase
(
const
vpDetectorBase
&o)
48
: m_polygon(o.m_polygon), m_message(o.m_message), m_nb_objects(o.m_nb_objects), m_timeout_ms(o.m_timeout_ms)
49
{
50
}
51
55
std::vector<vpImagePoint> &
vpDetectorBase::getPolygon
(
size_t
i)
56
{
57
if
(i <
m_polygon
.size())
58
return
m_polygon
[i];
59
else
60
throw
(
vpException
(
vpException::badValue
,
"Bad index to retrieve object %d. Only %d objects are detected."
, i,
61
m_polygon
.size()));
62
}
63
67
std::string &
vpDetectorBase::getMessage
(
size_t
i)
68
{
69
if
(i <
m_polygon
.size())
70
return
m_message
[i];
71
else
72
throw
(
vpException
(
vpException::badValue
,
"Bad index to retrieve object %d . Only %d objects are detected."
, i,
73
m_polygon
.size()));
74
}
75
79
vpImagePoint
vpDetectorBase::getCog
(
size_t
i)
const
80
{
81
vpImagePoint
cog(0, 0);
82
for
(
size_t
j = 0; j <
m_polygon
[i].size(); j++) {
83
cog +=
m_polygon
[i][j];
84
}
85
cog /= (double)
m_polygon
[i].size();
86
return
cog;
87
}
88
92
vpRect
vpDetectorBase::getBBox
(
size_t
i)
const
93
{
94
assert(
m_polygon
[i].size() > 2);
95
96
double
left, right;
97
double
top, bottom;
98
left = right =
m_polygon
[i][0].get_u();
99
top = bottom =
m_polygon
[i][0].get_v();
100
for
(
size_t
j = 0; j <
m_polygon
[i].size(); j++) {
101
double
u =
m_polygon
[i][j].get_u();
102
double
v =
m_polygon
[i][j].get_v();
103
if
(u < left)
104
left = u;
105
if
(u > right)
106
right = u;
107
if
(v < top)
108
top = v;
109
if
(v > bottom)
110
bottom = v;
111
}
112
vpRect
roi(
vpImagePoint
(top, left),
vpImagePoint
(bottom, right));
113
return
roi;
114
}
vpDetectorBase::m_message
std::vector< std::string > m_message
Message attached to each object.
Definition:
vpDetectorBase.h:68
vpException::badValue
@ badValue
Used to indicate that a value is not in the allowed range.
Definition:
vpException.h:97
vpDetectorBase::getBBox
vpRect getBBox(size_t i) const
Definition:
vpDetectorBase.cpp:92
vpDetectorBase::getPolygon
std::vector< std::vector< vpImagePoint > > & getPolygon()
Definition:
vpDetectorBase.h:121
vpDetectorBase::vpDetectorBase
vpDetectorBase()
Definition:
vpDetectorBase.cpp:45
vpDetectorBase::m_polygon
std::vector< std::vector< vpImagePoint > > m_polygon
For each object, defines the polygon that contains the object.
Definition:
vpDetectorBase.h:67
vpDetectorBase::getCog
vpImagePoint getCog(size_t i) const
Definition:
vpDetectorBase.cpp:79
vpImagePoint
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Definition:
vpImagePoint.h:88
vpException
error that can be emited by ViSP classes.
Definition:
vpException.h:71
vpDetectorBase
Definition:
vpDetectorBase.h:64
vpDetectorBase::getMessage
std::vector< std::string > & getMessage()
Definition:
vpDetectorBase.h:106
vpRect
Defines a rectangle in the plane.
Definition:
vpRect.h:78
modules
detection
src
vpDetectorBase.cpp
Generated by
1.8.17