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
e49b8dee
Commit
e49b8dee
authored
Dec 17, 2013
by
Roman Donchenko
Committed by
OpenCV Buildbot
Dec 17, 2013
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1881 from pentschev:defaultNorm_master
parents
52a785e9
6f3163f6
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
94 additions
and
26 deletions
+94
-26
common_interfaces_of_descriptor_extractors.rst
...ures2d/doc/common_interfaces_of_descriptor_extractors.rst
+3
-0
features2d.hpp
modules/features2d/include/opencv2/features2d.hpp
+10
-0
brief.cpp
modules/features2d/src/brief.cpp
+5
-0
brisk.cpp
modules/features2d/src/brisk.cpp
+6
-0
descriptors.cpp
modules/features2d/src/descriptors.cpp
+5
-0
freak.cpp
modules/features2d/src/freak.cpp
+5
-0
orb.cpp
modules/features2d/src/orb.cpp
+5
-0
test_rotation_and_scale_invariance.cpp
...es/features2d/test/test_rotation_and_scale_invariance.cpp
+13
-13
common_interfaces_of_descriptor_extractors.rst
...legacy/doc/common_interfaces_of_descriptor_extractors.rst
+1
-0
legacy.hpp
modules/legacy/include/opencv2/legacy.hpp
+1
-0
cuda.hpp
modules/nonfree/include/opencv2/nonfree/cuda.hpp
+2
-0
features2d.hpp
modules/nonfree/include/opencv2/nonfree/features2d.hpp
+6
-0
ocl.hpp
modules/nonfree/include/opencv2/nonfree/ocl.hpp
+2
-0
sift.cpp
modules/nonfree/src/sift.cpp
+5
-0
surf.cpp
modules/nonfree/src/surf.cpp
+1
-0
surf.cuda.cpp
modules/nonfree/src/surf.cuda.cpp
+5
-0
surf.ocl.cpp
modules/nonfree/src/surf.ocl.cpp
+5
-0
test_features2d.cpp
modules/nonfree/test/test_features2d.cpp
+1
-1
test_surf.cuda.cpp
modules/nonfree/test/test_surf.cuda.cpp
+1
-1
test_surf.ocl.cpp
modules/nonfree/test/test_surf.ocl.cpp
+1
-1
find_obj_calonder.cpp
samples/c/find_obj_calonder.cpp
+1
-1
brief_match_test.cpp
samples/cpp/brief_match_test.cpp
+1
-1
detector_descriptor_evaluation.cpp
samples/cpp/detector_descriptor_evaluation.cpp
+3
-2
freak_demo.cpp
samples/cpp/freak_demo.cpp
+1
-1
matcher_simple.cpp
samples/cpp/matcher_simple.cpp
+1
-1
shape_transformation.cpp
samples/cpp/shape_transformation.cpp
+1
-1
SURF_descriptor.cpp
samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp
+1
-1
video_homography.cpp
samples/cpp/video_homography.cpp
+1
-1
surf_keypoint_matcher.cpp
samples/gpu/surf_keypoint_matcher.cpp
+1
-1
No files found.
modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst
View file @
e49b8dee
...
...
@@ -35,6 +35,7 @@ Abstract base class for computing descriptors for image keypoints. ::
virtual int descriptorSize() const = 0;
virtual int descriptorType() const = 0;
virtual int defaultNorm() const = 0;
static Ptr<DescriptorExtractor> create( const String& descriptorExtractorType );
...
...
@@ -114,6 +115,7 @@ them into a single color descriptor. ::
virtual void write( FileStorage& ) const;
virtual int descriptorSize() const;
virtual int descriptorType() const;
virtual int defaultNorm() const;
protected:
...
};
...
...
@@ -141,6 +143,7 @@ Strecha C., Fua P. *BRIEF: Binary Robust Independent Elementary Features* ,
virtual void write( FileStorage& ) const;
virtual int descriptorSize() const;
virtual int descriptorType() const;
virtual int defaultNorm() const;
protected:
...
};
...
...
modules/features2d/include/opencv2/features2d.hpp
View file @
e49b8dee
...
...
@@ -169,6 +169,7 @@ public:
CV_WRAP
virtual
int
descriptorSize
()
const
=
0
;
CV_WRAP
virtual
int
descriptorType
()
const
=
0
;
CV_WRAP
virtual
int
defaultNorm
()
const
=
0
;
CV_WRAP
virtual
bool
empty
()
const
;
...
...
@@ -226,6 +227,8 @@ public:
int
descriptorSize
()
const
;
// returns the descriptor type
int
descriptorType
()
const
;
// returns the default norm type
int
defaultNorm
()
const
;
// Compute the BRISK features on an image
void
operator
()(
InputArray
image
,
InputArray
mask
,
std
::
vector
<
KeyPoint
>&
keypoints
)
const
;
...
...
@@ -320,6 +323,8 @@ public:
int
descriptorSize
()
const
;
// returns the descriptor type
int
descriptorType
()
const
;
// returns the default norm type
int
defaultNorm
()
const
;
// Compute the ORB features and descriptors on an image
void
operator
()(
InputArray
image
,
InputArray
mask
,
std
::
vector
<
KeyPoint
>&
keypoints
)
const
;
...
...
@@ -377,6 +382,9 @@ public:
/** returns the descriptor type */
virtual
int
descriptorType
()
const
;
/** returns the default norm type */
virtual
int
defaultNorm
()
const
;
/** select the 512 "best description pairs"
* @param images grayscale images set
* @param keypoints set of detected keypoints
...
...
@@ -837,6 +845,7 @@ public:
virtual
int
descriptorSize
()
const
;
virtual
int
descriptorType
()
const
;
virtual
int
defaultNorm
()
const
;
virtual
bool
empty
()
const
;
...
...
@@ -863,6 +872,7 @@ public:
virtual
int
descriptorSize
()
const
;
virtual
int
descriptorType
()
const
;
virtual
int
defaultNorm
()
const
;
/// @todo read and write for brief
...
...
modules/features2d/src/brief.cpp
View file @
e49b8dee
...
...
@@ -125,6 +125,11 @@ int BriefDescriptorExtractor::descriptorType() const
return
CV_8UC1
;
}
int
BriefDescriptorExtractor
::
defaultNorm
()
const
{
return
NORM_HAMMING
;
}
void
BriefDescriptorExtractor
::
read
(
const
FileNode
&
fn
)
{
int
dSize
=
fn
[
"descriptorSize"
];
...
...
modules/features2d/src/brisk.cpp
View file @
e49b8dee
...
...
@@ -712,6 +712,12 @@ BRISK::descriptorType() const
return
CV_8U
;
}
int
BRISK
::
defaultNorm
()
const
{
return
NORM_HAMMING
;
}
BRISK
::~
BRISK
()
{
delete
[]
patternPoints_
;
...
...
modules/features2d/src/descriptors.cpp
View file @
e49b8dee
...
...
@@ -247,6 +247,11 @@ int OpponentColorDescriptorExtractor::descriptorType() const
return
descriptorExtractor
->
descriptorType
();
}
int
OpponentColorDescriptorExtractor
::
defaultNorm
()
const
{
return
descriptorExtractor
->
defaultNorm
();
}
bool
OpponentColorDescriptorExtractor
::
empty
()
const
{
return
!
descriptorExtractor
||
descriptorExtractor
->
empty
();
...
...
modules/features2d/src/freak.cpp
View file @
e49b8dee
...
...
@@ -676,4 +676,9 @@ int FREAK::descriptorType() const
return
CV_8U
;
}
int
FREAK
::
defaultNorm
()
const
{
return
NORM_HAMMING
;
}
}
// END NAMESPACE CV
modules/features2d/src/orb.cpp
View file @
e49b8dee
...
...
@@ -575,6 +575,11 @@ int ORB::descriptorType() const
return
CV_8U
;
}
int
ORB
::
defaultNorm
()
const
{
return
NORM_HAMMING
;
}
/** Compute the ORB features and descriptors on an image
* @param img the image to compute the features and descriptors on
* @param mask the mask to apply
...
...
modules/features2d/test/test_rotation_and_scale_invariance.cpp
View file @
e49b8dee
...
...
@@ -616,8 +616,8 @@ TEST(Features2d_RotationInvariance_Detector_ORB, regression)
TEST
(
Features2d_RotationInvariance_Descriptor_BRISK
,
regression
)
{
DescriptorRotationInvarianceTest
test
(
Algorithm
::
create
<
FeatureDetector
>
(
"Feature2D.BRISK"
),
Algorithm
::
create
<
DescriptorExtractor
>
(
"Feature2D.BRISK"
),
NORM_HAMMING
,
Algorithm
::
create
<
DescriptorExtractor
>
(
"Feature2D.BRISK"
),
Algorithm
::
create
<
DescriptorExtractor
>
(
"Feature2D.BRISK"
)
->
defaultNorm
()
,
0.99
f
);
test
.
safe_run
();
}
...
...
@@ -626,7 +626,7 @@ TEST(Features2d_RotationInvariance_Descriptor_ORB, regression)
{
DescriptorRotationInvarianceTest
test
(
Algorithm
::
create
<
FeatureDetector
>
(
"Feature2D.ORB"
),
Algorithm
::
create
<
DescriptorExtractor
>
(
"Feature2D.ORB"
),
NORM_HAMMING
,
Algorithm
::
create
<
DescriptorExtractor
>
(
"Feature2D.ORB"
)
->
defaultNorm
()
,
0.99
f
);
test
.
safe_run
();
}
...
...
@@ -635,7 +635,7 @@ TEST(Features2d_RotationInvariance_Descriptor_ORB, regression)
//{
// DescriptorRotationInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.ORB"),
// Algorithm::create<DescriptorExtractor>("Feature2D.FREAK"),
//
NORM_HAMMING
,
//
Algorithm::create<DescriptorExtractor>("Feature2D.FREAK")->defaultNorm()
,
// 0.f);
// test.safe_run();
//}
...
...
@@ -667,26 +667,26 @@ TEST(Features2d_ScaleInvariance_Detector_BRISK, regression)
//TEST(Features2d_ScaleInvariance_Descriptor_BRISK, regression)
//{
// DescriptorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.BRISK"),
// Algorithm::create<DescriptorExtractor>("Feature2D.BRISK"),
//
NORM_HAMMING
,
// 0.99f);
//
Algorithm::create<DescriptorExtractor>("Feature2D.BRISK"),
//
Algorithm::create<DescriptorExtractor>("Feature2D.BRISK")->defaultNorm()
,
//
0.99f);
// test.safe_run();
//}
//TEST(Features2d_ScaleInvariance_Descriptor_ORB, regression)
//{
// DescriptorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.ORB"),
//
Algorithm::create<DescriptorExtractor>("Feature2D.ORB"),
//
NORM_HAMMING
,
// 0.01f);
//
Algorithm::create<DescriptorExtractor>("Feature2D.ORB"),
//
Algorithm::create<DescriptorExtractor>("Feature2D.ORB")->defaultNorm()
,
//
0.01f);
// test.safe_run();
//}
//TEST(Features2d_ScaleInvariance_Descriptor_FREAK, regression)
//{
// DescriptorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.ORB"),
// Algorithm::create<DescriptorExtractor>("Feature2D.FREAK"),
//
NORM_HAMMING
,
// 0.01f);
//
Algorithm::create<DescriptorExtractor>("Feature2D.FREAK"),
//
Algorithm::create<DescriptorExtractor>("Feature2D.FREAK")->defaultNorm()
,
//
0.01f);
// test.safe_run();
//}
modules/legacy/doc/common_interfaces_of_descriptor_extractors.rst
View file @
e49b8dee
...
...
@@ -28,6 +28,7 @@ Wrapping class for computing descriptors by using the
virtual void write( FileStorage &fs ) const;
virtual int descriptorSize() const;
virtual int descriptorType() const;
virtual int defaultNorm() const;
protected:
...
}
modules/legacy/include/opencv2/legacy.hpp
View file @
e49b8dee
...
...
@@ -2765,6 +2765,7 @@ public:
virtual
int
descriptorSize
()
const
{
return
classifier_
.
classes
();
}
virtual
int
descriptorType
()
const
{
return
DataType
<
T
>::
type
;
}
virtual
int
defaultNorm
()
const
{
return
NORM_L1
;
}
virtual
bool
empty
()
const
;
...
...
modules/nonfree/include/opencv2/nonfree/cuda.hpp
View file @
e49b8dee
...
...
@@ -70,6 +70,8 @@ public:
//! returns the descriptor size in float's (64 or 128)
int
descriptorSize
()
const
;
//! returns the default norm type
int
defaultNorm
()
const
;
//! upload host keypoints to device memory
void
uploadKeypoints
(
const
std
::
vector
<
KeyPoint
>&
keypoints
,
GpuMat
&
keypointsGPU
);
...
...
modules/nonfree/include/opencv2/nonfree/features2d.hpp
View file @
e49b8dee
...
...
@@ -66,6 +66,9 @@ public:
//! returns the descriptor type
CV_WRAP
int
descriptorType
()
const
;
//! returns the default norm type
CV_WRAP
int
defaultNorm
()
const
;
//! finds the keypoints using SIFT algorithm
void
operator
()(
InputArray
img
,
InputArray
mask
,
std
::
vector
<
KeyPoint
>&
keypoints
)
const
;
...
...
@@ -118,6 +121,9 @@ public:
//! returns the descriptor type
CV_WRAP
int
descriptorType
()
const
;
//! returns the descriptor type
CV_WRAP
int
defaultNorm
()
const
;
//! finds the keypoints using fast hessian detector used in SURF
void
operator
()(
InputArray
img
,
InputArray
mask
,
CV_OUT
std
::
vector
<
KeyPoint
>&
keypoints
)
const
;
...
...
modules/nonfree/include/opencv2/nonfree/ocl.hpp
View file @
e49b8dee
...
...
@@ -76,6 +76,8 @@ namespace cv
//! returns the descriptor size in float's (64 or 128)
int
descriptorSize
()
const
;
//! returns the default norm type
int
defaultNorm
()
const
;
//! upload host keypoints to device memory
void
uploadKeypoints
(
const
std
::
vector
<
cv
::
KeyPoint
>
&
keypoints
,
oclMat
&
keypointsocl
);
//! download keypoints from device to host memory
...
...
modules/nonfree/src/sift.cpp
View file @
e49b8dee
...
...
@@ -717,6 +717,11 @@ int SIFT::descriptorType() const
return
CV_32F
;
}
int
SIFT
::
defaultNorm
()
const
{
return
NORM_L2
;
}
void
SIFT
::
operator
()(
InputArray
_image
,
InputArray
_mask
,
std
::
vector
<
KeyPoint
>&
keypoints
)
const
...
...
modules/nonfree/src/surf.cpp
View file @
e49b8dee
...
...
@@ -884,6 +884,7 @@ SURF::SURF(double _threshold, int _nOctaves, int _nOctaveLayers, bool _extended,
int
SURF
::
descriptorSize
()
const
{
return
extended
?
128
:
64
;
}
int
SURF
::
descriptorType
()
const
{
return
CV_32F
;
}
int
SURF
::
defaultNorm
()
const
{
return
NORM_L2
;
}
void
SURF
::
operator
()(
InputArray
imgarg
,
InputArray
maskarg
,
CV_OUT
std
::
vector
<
KeyPoint
>&
keypoints
)
const
...
...
modules/nonfree/src/surf.cuda.cpp
View file @
e49b8dee
...
...
@@ -265,6 +265,11 @@ int cv::cuda::SURF_CUDA::descriptorSize() const
return
extended
?
128
:
64
;
}
int
cv
::
cuda
::
SURF_CUDA
::
defaultNorm
()
const
{
return
NORM_L2
;
}
void
cv
::
cuda
::
SURF_CUDA
::
uploadKeypoints
(
const
std
::
vector
<
KeyPoint
>&
keypoints
,
GpuMat
&
keypointsGPU
)
{
if
(
keypoints
.
empty
())
...
...
modules/nonfree/src/surf.ocl.cpp
View file @
e49b8dee
...
...
@@ -299,6 +299,11 @@ int cv::ocl::SURF_OCL::descriptorSize() const
return
extended
?
128
:
64
;
}
int
cv
::
ocl
::
SURF_OCL
::
defaultNorm
()
const
{
return
NORM_L2
;
}
void
cv
::
ocl
::
SURF_OCL
::
uploadKeypoints
(
const
std
::
vector
<
KeyPoint
>
&
keypoints
,
oclMat
&
keypointsGPU
)
{
if
(
keypoints
.
empty
())
...
...
modules/nonfree/test/test_features2d.cpp
View file @
e49b8dee
...
...
@@ -1124,7 +1124,7 @@ protected:
CV_Assert
(
kpt2
[
i
].
response
>
0
);
vector
<
DMatch
>
matches
;
BFMatcher
(
NORM_L2
,
true
).
match
(
d1
,
d2
,
matches
);
BFMatcher
(
f
->
defaultNorm
()
,
true
).
match
(
d1
,
d2
,
matches
);
vector
<
Point2f
>
pt1
,
pt2
;
for
(
size_t
i
=
0
;
i
<
matches
.
size
();
i
++
)
{
...
...
modules/nonfree/test/test_surf.cuda.cpp
View file @
e49b8dee
...
...
@@ -176,7 +176,7 @@ CUDA_TEST_P(SURF, Descriptor)
cv
::
Mat
descriptors_gold
;
surf_gold
(
image
,
cv
::
noArray
(),
keypoints
,
descriptors_gold
,
true
);
cv
::
BFMatcher
matcher
(
cv
::
NORM_L2
);
cv
::
BFMatcher
matcher
(
surf
.
defaultNorm
()
);
std
::
vector
<
cv
::
DMatch
>
matches
;
matcher
.
match
(
descriptors_gold
,
cv
::
Mat
(
descriptors
),
matches
);
...
...
modules/nonfree/test/test_surf.ocl.cpp
View file @
e49b8dee
...
...
@@ -195,7 +195,7 @@ TEST_P(SURF, DISABLED_Descriptor)
cv
::
Mat
descriptors_gold
;
surf_gold
(
image
,
cv
::
noArray
(),
keypoints
,
descriptors_gold
,
true
);
cv
::
BFMatcher
matcher
(
cv
::
NORM_L2
);
cv
::
BFMatcher
matcher
(
surf
.
defaultNorm
()
);
std
::
vector
<
cv
::
DMatch
>
matches
;
matcher
.
match
(
descriptors_gold
,
cv
::
Mat
(
descriptors
),
matches
);
...
...
samples/c/find_obj_calonder.cpp
View file @
e49b8dee
...
...
@@ -125,7 +125,7 @@ static void testCalonderClassifier( const string& classifierFilename, const stri
Mat
descriptors2
;
de
.
compute
(
img2
,
keypoints2
,
descriptors2
);
// Match descriptors
BFMatcher
matcher
(
NORM_L1
);
BFMatcher
matcher
(
de
.
defaultNorm
()
);
vector
<
DMatch
>
matches
;
matcher
.
match
(
descriptors1
,
descriptors2
,
matches
);
...
...
samples/cpp/brief_match_test.cpp
View file @
e49b8dee
...
...
@@ -106,7 +106,7 @@ int main(int argc, const char ** argv)
//Do matching using features2d
cout
<<
"matching with BruteForceMatcher<Hamming>"
<<
endl
;
BFMatcher
matcher_popcount
(
NORM_HAMMING
);
BFMatcher
matcher_popcount
(
extractor
.
defaultNorm
()
);
vector
<
DMatch
>
matches_popcount
;
double
pop_time
=
match
(
kpts_1
,
kpts_2
,
matcher_popcount
,
desc_1
,
desc_2
,
matches_popcount
);
cout
<<
"done BruteForceMatcher<Hamming> matching. took "
<<
pop_time
<<
" seconds"
<<
endl
;
...
...
samples/cpp/detector_descriptor_evaluation.cpp
View file @
e49b8dee
...
...
@@ -881,9 +881,10 @@ public:
virtual
void
readAlgorithm
(
)
{
string
classifierFile
=
data_path
+
"/features2d/calonder_classifier.rtc"
;
Ptr
<
DescriptorExtractor
>
extractor
=
makePtr
<
CalonderDescriptorExtractor
<
float
>
>
(
classifierFile
);
defaultDescMatcher
=
makePtr
<
VectorDescriptorMatch
>
(
makePtr
<
CalonderDescriptorExtractor
<
float
>
>
(
classifierFile
)
,
makePtr
<
BFMatcher
>
(
int
(
NORM_L2
)));
extractor
,
makePtr
<
BFMatcher
>
(
extractor
->
defaultNorm
(
)));
specificDescMatcher
=
defaultDescMatcher
;
}
};
...
...
samples/cpp/freak_demo.cpp
View file @
e49b8dee
...
...
@@ -96,7 +96,7 @@ int main( int argc, char** argv ) {
// The standard Hamming distance can be used such as
// BFMatcher matcher(NORM_HAMMING);
// or the proposed cascade of hamming distance using SSSE3
BFMatcher
matcher
(
NORM_HAMMING
);
BFMatcher
matcher
(
extractor
.
defaultNorm
()
);
// detect
double
t
=
(
double
)
getTickCount
();
...
...
samples/cpp/matcher_simple.cpp
View file @
e49b8dee
...
...
@@ -44,7 +44,7 @@ int main(int argc, char** argv)
extractor
.
compute
(
img2
,
keypoints2
,
descriptors2
);
// matching descriptors
BFMatcher
matcher
(
NORM_L2
);
BFMatcher
matcher
(
extractor
.
defaultNorm
()
);
vector
<
DMatch
>
matches
;
matcher
.
match
(
descriptors1
,
descriptors2
,
matches
);
...
...
samples/cpp/shape_transformation.cpp
View file @
e49b8dee
...
...
@@ -45,7 +45,7 @@ int main(int argc, char** argv)
extractor
.
compute
(
img2
,
keypoints2
,
descriptors2
);
// matching descriptors
BFMatcher
matcher
(
NORM_L2
);
BFMatcher
matcher
(
extractor
.
defaultNorm
()
);
vector
<
DMatch
>
matches
;
matcher
.
match
(
descriptors1
,
descriptors2
,
matches
);
...
...
samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp
View file @
e49b8dee
...
...
@@ -49,7 +49,7 @@ int main( int argc, char** argv )
extractor
.
compute
(
img_2
,
keypoints_2
,
descriptors_2
);
//-- Step 3: Matching descriptor vectors with a brute force matcher
BFMatcher
matcher
(
NORM_L2
);
BFMatcher
matcher
(
extractor
.
defaultNorm
()
);
std
::
vector
<
DMatch
>
matches
;
matcher
.
match
(
descriptors_1
,
descriptors_2
,
matches
);
...
...
samples/cpp/video_homography.cpp
View file @
e49b8dee
...
...
@@ -140,7 +140,7 @@ int main(int ac, char ** av)
vector
<
DMatch
>
matches
;
BFMatcher
desc_matcher
(
NORM_HAMMING
);
BFMatcher
desc_matcher
(
brief
.
defaultNorm
()
);
vector
<
Point2f
>
train_pts
,
query_pts
;
vector
<
KeyPoint
>
train_kpts
,
query_kpts
;
...
...
samples/gpu/surf_keypoint_matcher.cpp
View file @
e49b8dee
...
...
@@ -62,7 +62,7 @@ int main(int argc, char* argv[])
cout
<<
"FOUND "
<<
keypoints2GPU
.
cols
<<
" keypoints on second image"
<<
endl
;
// matching descriptors
BFMatcher_CUDA
matcher
(
NORM_L2
);
BFMatcher_CUDA
matcher
(
surf
.
defaultNorm
()
);
GpuMat
trainIdx
,
distance
;
matcher
.
matchSingle
(
descriptors1GPU
,
descriptors2GPU
,
trainIdx
,
distance
);
...
...
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