простой вопрос, но не могу понять это.
как правило, это 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
Спасибо за вашу помощь.
Вам действительно не нужна маска, но подматрица maxRowGChnnl. Вы можете сделать это:
cv::minMaxLoc(maxRowGChnnl(Rect(lower,0,upper-lower,0)),&minValue,&maxValue,&minLoc,&maxLoc);
маска должна быть cv :: Mat того же размера, что и axRowGChnnl.row (0), и типа CV_8UC1. Включенные элементы должны иметь значения, равные 1 отключенному 0.