Реализуйте функцию minMaxLoc() OpenCV.C++

Программы на C++. Форум разработчиков
Anonymous
Реализуйте функцию minMaxLoc() OpenCV.

Сообщение Anonymous »

Я использовал функцию cv::minMaxLoc() OpenCV в своем коде. Но из-за некоторых ограничений на устройстве я не могу вызвать его из OpenCV и мне приходится реализовывать его самому с нуля. Но это не работает так, как ожидалось. В чем проблема с кодом?
Как я звонил через OpenCV:
double minScore, maxScore;
cv::Point minClassLoc, maxClassLoc;
cv::minMaxLoc(classes_scores, &minScore, &maxScore, &minClassLoc, &maxClassLoc);

И моя реализация вручную:
void minMaxLoc(cv::Mat& input, double* minVal, double* maxVal, cv::Point* minLoc, cv::Point* maxLoc) {

int rows = input.rows;
int cols = input.cols;

int minRow = 0, minCol = 0, maxRow = 0, maxCol = 0;
double minValue = input.at(0, 0);
double maxValue = input.at(0, 0);

for (int row = 0; row < rows; ++row) {
const double* rowData = input.ptr(row);
for (int col = 0; col < cols; ++col) {
double value = rowData[col];
if (value < minValue) {
minValue = value;
minRow = row;
minCol = col;
}
if (value > maxValue) {
maxValue = value;
maxRow = row;
maxCol = col;
}
}
}

*minVal = minValue;
*maxVal = maxValue;
*minLoc = cv::Point(minCol, minRow);
*maxLoc = cv::Point(maxCol, maxRow);
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... c-function

Вернуться в «C++»