Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
ab748188
Commit
ab748188
authored
Oct 02, 2017
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #9596 from paroj:circle_board_params
parents
e340ff9c
629a06d9
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
46 additions
and
14 deletions
+46
-14
calib3d.hpp
modules/calib3d/include/opencv2/calib3d.hpp
+14
-0
gen_dict.json
modules/calib3d/misc/java/gen_dict.json
+2
-1
calibinit.cpp
modules/calib3d/src/calibinit.cpp
+19
-9
circlesgrid.cpp
modules/calib3d/src/circlesgrid.cpp
+7
-0
circlesgrid.hpp
modules/calib3d/src/circlesgrid.hpp
+4
-4
No files found.
modules/calib3d/include/opencv2/calib3d.hpp
View file @
ab748188
...
...
@@ -783,6 +783,14 @@ struct CV_EXPORTS_W_SIMPLE CirclesGridFinderParameters
GridType
gridType
;
};
struct
CV_EXPORTS_W_SIMPLE
CirclesGridFinderParameters2
:
public
CirclesGridFinderParameters
{
CV_WRAP
CirclesGridFinderParameters2
();
CV_PROP_RW
float
squareSize
;
//!< Distance between two adjacent points. Used by CALIB_CB_CLUSTERING.
CV_PROP_RW
float
maxRectifiedDistance
;
//!< Max deviation from predicion. Used by CALIB_CB_CLUSTERING.
};
/** @brief Finds centers in the grid of circles.
@param image grid view of input circles; it must be an 8-bit grayscale or color image.
...
...
@@ -820,6 +828,12 @@ CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize,
const
Ptr
<
FeatureDetector
>
&
blobDetector
,
CirclesGridFinderParameters
parameters
);
/** @overload */
CV_EXPORTS_W
bool
findCirclesGrid2
(
InputArray
image
,
Size
patternSize
,
OutputArray
centers
,
int
flags
,
const
Ptr
<
FeatureDetector
>
&
blobDetector
,
CirclesGridFinderParameters2
parameters
);
/** @overload */
CV_EXPORTS_W
bool
findCirclesGrid
(
InputArray
image
,
Size
patternSize
,
OutputArray
centers
,
int
flags
=
CALIB_CB_SYMMETRIC_GRID
,
...
...
modules/calib3d/misc/java/gen_dict.json
View file @
ab748188
{
"class_ignore_list"
:
[
"CirclesGridFinderParameters"
"CirclesGridFinderParameters"
,
"CirclesGridFinderParameters2"
],
"missing_consts"
:
{
"Calib3d"
:
{
...
...
modules/calib3d/src/calibinit.cpp
View file @
ab748188
...
...
@@ -2094,9 +2094,19 @@ void cv::drawChessboardCorners( InputOutputArray _image, Size patternSize,
nelems
,
patternWasFound
);
}
bool
cv
::
findCirclesGrid
(
InputArray
_image
,
Size
patternSize
,
bool
cv
::
findCirclesGrid
(
InputArray
image
,
Size
patternSize
,
OutputArray
centers
,
int
flags
,
const
Ptr
<
FeatureDetector
>
&
blobDetector
,
CirclesGridFinderParameters
parameters
)
{
CirclesGridFinderParameters2
parameters2
;
*
((
CirclesGridFinderParameters
*
)
&
parameters2
)
=
parameters
;
return
cv
::
findCirclesGrid2
(
image
,
patternSize
,
centers
,
flags
,
blobDetector
,
parameters2
);
}
bool
cv
::
findCirclesGrid2
(
InputArray
_image
,
Size
patternSize
,
OutputArray
_centers
,
int
flags
,
const
Ptr
<
FeatureDetector
>
&
blobDetector
,
CirclesGridFinderParameters
parameters
)
CirclesGridFinderParameters
2
parameters
)
{
CV_INSTRUMENT_REGION
()
...
...
@@ -2115,19 +2125,19 @@ bool cv::findCirclesGrid( InputArray _image, Size patternSize,
points
.
push_back
(
keypoints
[
i
].
pt
);
}
if
(
flags
&
CALIB_CB_ASYMMETRIC_GRID
)
parameters
.
gridType
=
CirclesGridFinderParameters
::
ASYMMETRIC_GRID
;
if
(
flags
&
CALIB_CB_SYMMETRIC_GRID
)
parameters
.
gridType
=
CirclesGridFinderParameters
::
SYMMETRIC_GRID
;
if
(
flags
&
CALIB_CB_CLUSTERING
)
{
CirclesGridClusterFinder
circlesGridClusterFinder
(
isAsymmetricGrid
);
CirclesGridClusterFinder
circlesGridClusterFinder
(
parameters
);
circlesGridClusterFinder
.
findGrid
(
points
,
patternSize
,
centers
);
Mat
(
centers
).
copyTo
(
_centers
);
return
!
centers
.
empty
();
}
if
(
flags
&
CALIB_CB_ASYMMETRIC_GRID
)
parameters
.
gridType
=
CirclesGridFinderParameters
::
ASYMMETRIC_GRID
;
if
(
flags
&
CALIB_CB_SYMMETRIC_GRID
)
parameters
.
gridType
=
CirclesGridFinderParameters
::
SYMMETRIC_GRID
;
const
int
attempts
=
2
;
const
size_t
minHomographyPoints
=
4
;
Mat
H
;
...
...
@@ -2191,7 +2201,7 @@ bool cv::findCirclesGrid( InputArray _image, Size patternSize,
bool
cv
::
findCirclesGrid
(
InputArray
_image
,
Size
patternSize
,
OutputArray
_centers
,
int
flags
,
const
Ptr
<
FeatureDetector
>
&
blobDetector
)
{
return
cv
::
findCirclesGrid
(
_image
,
patternSize
,
_centers
,
flags
,
blobDetector
,
CirclesGridFinderParameters
());
return
cv
::
findCirclesGrid
2
(
_image
,
patternSize
,
_centers
,
flags
,
blobDetector
,
CirclesGridFinderParameters2
());
}
/* End of file. */
modules/calib3d/src/circlesgrid.cpp
View file @
ab748188
...
...
@@ -559,6 +559,13 @@ CirclesGridFinderParameters::CirclesGridFinderParameters()
gridType
=
SYMMETRIC_GRID
;
}
CirclesGridFinderParameters2
::
CirclesGridFinderParameters2
()
:
CirclesGridFinderParameters
()
{
squareSize
=
1.0
f
;
maxRectifiedDistance
=
squareSize
/
2.0
f
;
}
CirclesGridFinder
::
CirclesGridFinder
(
Size
_patternSize
,
const
std
::
vector
<
Point2f
>
&
testKeypoints
,
const
CirclesGridFinderParameters
&
_parameters
)
:
patternSize
(
static_cast
<
size_t
>
(
_patternSize
.
width
),
static_cast
<
size_t
>
(
_patternSize
.
height
))
...
...
modules/calib3d/src/circlesgrid.hpp
View file @
ab748188
...
...
@@ -56,11 +56,11 @@ class CirclesGridClusterFinder
CirclesGridClusterFinder
&
operator
=
(
const
CirclesGridClusterFinder
&
);
CirclesGridClusterFinder
(
const
CirclesGridClusterFinder
&
);
public
:
CirclesGridClusterFinder
(
bool
_isAsymmetricGrid
)
CirclesGridClusterFinder
(
const
cv
::
CirclesGridFinderParameters2
&
parameters
)
{
isAsymmetricGrid
=
_isAsymmetricGrid
;
squareSize
=
1.0
f
;
maxRectifiedDistance
=
(
float
)(
squareSize
/
2.0
)
;
isAsymmetricGrid
=
parameters
.
gridType
==
cv
::
CirclesGridFinderParameters
::
ASYMMETRIC_GRID
;
squareSize
=
parameters
.
squareSize
;
maxRectifiedDistance
=
parameters
.
maxRectifiedDistance
;
}
void
findGrid
(
const
std
::
vector
<
cv
::
Point2f
>
&
points
,
cv
::
Size
patternSize
,
std
::
vector
<
cv
::
Point2f
>&
centers
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment