From c22f72e248a56771169bcc9362a66a89088f6f48 Mon Sep 17 00:00:00 2001 From: Jiri Horner Date: Wed, 7 Jun 2017 16:55:41 +0200 Subject: [PATCH] feature2d: fix descriptors allocation for AKAZE and KAZE fix crash when descriptors are UMat --- modules/features2d/src/akaze.cpp | 4 +++- modules/features2d/src/kaze.cpp | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/features2d/src/akaze.cpp b/modules/features2d/src/akaze.cpp index 2297194b2c..566283859e 100644 --- a/modules/features2d/src/akaze.cpp +++ b/modules/features2d/src/akaze.cpp @@ -211,8 +211,10 @@ namespace cv if( descriptors.needed() ) { - Mat& desc = descriptors.getMatRef(); + Mat desc; impl.Compute_Descriptors(keypoints, desc); + // TODO optimize this copy + desc.copyTo(descriptors); CV_Assert((!desc.rows || desc.cols == descriptorSize())); CV_Assert((!desc.rows || (desc.type() == descriptorType()))); diff --git a/modules/features2d/src/kaze.cpp b/modules/features2d/src/kaze.cpp index 63b48c3b41..9e24397cc5 100644 --- a/modules/features2d/src/kaze.cpp +++ b/modules/features2d/src/kaze.cpp @@ -151,8 +151,9 @@ namespace cv if( descriptors.needed() ) { - Mat& desc = descriptors.getMatRef(); + Mat desc; impl.Feature_Description(keypoints, desc); + desc.copyTo(descriptors); CV_Assert((!desc.rows || desc.cols == descriptorSize())); CV_Assert((!desc.rows || (desc.type() == descriptorType())));