void checkSameSizeAndDepth(InputArrayOfArrays src, Size &sz, int &depth) { CV_Assert(src.isMat() || src.isUMat() || src.isMatVector() || src.isUMatVector()); if (src.isMat() || src.isUMat()) { CV_Assert(!src.empty()); sz = src.size(); depth = src.depth(); } else if (src.isMatVector()) { const vector<Mat>& srcv = *static_cast<const vector<Mat>*>(src.getObj()); CV_Assert(srcv.size() > 0); for (unsigned i = 0; i < srcv.size(); i++) { CV_Assert(srcv[i].depth() == srcv[0].depth()); CV_Assert(srcv[i].size() == srcv[0].size()); } sz = srcv[0].size(); depth = srcv[0].depth(); } else if (src.isUMatVector()) { const vector<UMat>& srcv = *static_cast<const vector<UMat>*>(src.getObj()); CV_Assert(srcv.size() > 0); for (unsigned i = 0; i < srcv.size(); i++) { CV_Assert(srcv[i].depth() == srcv[0].depth()); CV_Assert(srcv[i].size() == srcv[0].size()); } sz = srcv[0].size(); depth = srcv[0].depth(); } }
void Feature2D::detect( InputArrayOfArrays _images, std::vector<std::vector<KeyPoint> >& keypoints, InputArrayOfArrays _masks ) { CV_INSTRUMENT_REGION() vector<Mat> images, masks; _images.getMatVector(images); size_t i, nimages = images.size(); if( !_masks.empty() ) { _masks.getMatVector(masks); CV_Assert(masks.size() == nimages); } keypoints.resize(nimages); for( i = 0; i < nimages; i++ ) { detect(images[i], keypoints[i], masks.empty() ? Mat() : masks[i] ); } }