Fixed cvExtractSURF in case of no keypoints found #2076
This commit is contained in:
parent
d60b1f2f82
commit
e8b0d27942
@ -17,16 +17,16 @@
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
* Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
* The name of Contributor may not be used to endorse or
|
||||
* promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
* Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
* The name of Contributor may not be used to endorse or
|
||||
* promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
@ -71,26 +71,26 @@ cvExtractSURF( const CvArr* _img, const CvArr* _mask,
|
||||
mask = cvarrToMat(_mask);
|
||||
vector<KeyPoint> kpt;
|
||||
Mat descr;
|
||||
|
||||
|
||||
Ptr<Feature2D> surf = Algorithm::create<Feature2D>("Feature2D.SURF");
|
||||
if( surf.empty() )
|
||||
CV_Error(CV_StsNotImplemented, "OpenCV was built without SURF support");
|
||||
|
||||
|
||||
surf->set("hessianThreshold", params.hessianThreshold);
|
||||
surf->set("nOctaves", params.nOctaves);
|
||||
surf->set("nOctaveLayers", params.nOctaveLayers);
|
||||
surf->set("upright", params.upright != 0);
|
||||
surf->set("extended", params.extended != 0);
|
||||
|
||||
|
||||
surf->operator()(img, mask, kpt, _descriptors ? _OutputArray(descr) : noArray(),
|
||||
useProvidedKeyPts != 0);
|
||||
|
||||
|
||||
if( _keypoints )
|
||||
*_keypoints = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvSURFPoint), storage);
|
||||
|
||||
|
||||
if( _descriptors )
|
||||
*_descriptors = cvCreateSeq(0, sizeof(CvSeq), descr.cols*descr.elemSize(), storage);
|
||||
|
||||
*_descriptors = cvCreateSeq(0, sizeof(CvSeq), surf->descriptorSize() * CV_ELEM_SIZE(surf->descriptorType()), storage);
|
||||
|
||||
for( size_t i = 0; i < kpt.size(); i++ )
|
||||
{
|
||||
if( _keypoints )
|
||||
@ -113,7 +113,7 @@ cvGetStarKeypoints( const CvArr* _img, CvMemStorage* storage,
|
||||
params.suppressNonmaxSize);
|
||||
vector<KeyPoint> kpts;
|
||||
star->detect(cvarrToMat(_img), kpts, Mat());
|
||||
|
||||
|
||||
CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvStarKeypoint), storage);
|
||||
for( size_t i = 0; i < kpts.size(); i++ )
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user