Как должна выглядеть cv :: mask для opencv minMaxLoc?

простой вопрос, но не могу понять это.

как правило, это void minMaxLoc (InputArray src, double * minVal, double * maxVal = 0, Point * minLoc = 0, Point * maxLoc = 0, InputArray mask = noArray ())
Но как выглядит маска?

Это то, что я хочу: это одномерный Mat (только одна строка), и я хочу, чтобы minMax расположение интервала (от нижнего до верхнего границы) Mat (maxRowGChnnl).

int lowerBorder,upperBorder;
lowerBorder = 30;
upperBorder = 100;
cv::minMaxLoc(maxRowGChnnl.row(0),&minValue,&maxValue,&minLoc,&maxLoc,(lowerBorder,upperBorder));

Это размер maxRowGChnnl:

maxRowGChnnl    {flags=1124024325 dims=2 rows=1 ...}    cv::Mat
flags   1124024325  int
dims    2   int
rows    1   int
cols    293 int

Код выше сокращает с помощью:

OpenCV Error: Assertion failed ((cn == 1 && (mask.empty() || mask.type() == CV_8
U)) || (cn >= 1 && mask.empty() && !minIdx && !maxIdx)) in unknown function, fil
e ..\..\..\src\opencv\modules\core\src\stat.cpp, line 787

Спасибо за вашу помощь.

6

Решение

Вам действительно не нужна маска, но подматрица maxRowGChnnl. Вы можете сделать это:

cv::minMaxLoc(maxRowGChnnl(Rect(lower,0,upper-lower,0)),&minValue,&maxValue,&minLoc,&maxLoc);
5

Другие решения

маска должна быть cv :: Mat того же размера, что и axRowGChnnl.row (0), и типа CV_8UC1. Включенные элементы должны иметь значения, равные 1 отключенному 0.

6

По вопросам рекламы [email protected]