Технически не нужно указывать пустую матрицу для использования функции detect
, так как это параметр по умолчанию.
Вы можете позвонить detect
так:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints);
Или, явно создав пустую матрицу:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints, Mat());
Если вы хотите создать маску в интересующей области, вы можете создать ее следующим образом:
Предполагая, что Source_pic
имеет тип CV_8UC3
,
Mat mask = Mat::zeros(Source_pic.size(), Source_pic.type());
// select a ROI
Mat roi(mask, Rect(10,10,100,100));
// fill the ROI with (255, 255, 255) (which is white in RGB space);
// the original image will be modified
roi = Scalar(255, 255, 255);
РЕДАКТИРОВАТЬ: Там была ошибка копирования макаронных изделий. Установите ROI для mask
, а затем передайте его функции detect
.
Надеюсь, что все прояснилось!