minMaxLoc()函数 是 OpenCV 库中的一个函数,用于找到一个多维数组中的最小值和最大值,以及它们的位置。这个函数对于处理图像和数组非常有用。本文通过参数和示例详解,帮助大家理解和使用该函数。
参数详解
函数原型:
void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray());
参数详解:
src:输入数组或者向量,必须包含至少一个元素。
minVal:可选的输出参数,用于存储最小值的实际值。如果不需要这个值,可以设为0。
maxVal:可选的输出参数,用于存储最大值的实际值。如果不需要这个值,可以设为0。
minLoc:可选的输出参数,用于存储最小值的位置。如果不需要这个值,可以设为0。
maxLoc:可选的输出参数,用于存储最大值的位置。如果不需要这个值,可以设为0。
mask:可选的掩码,其大小和类型必须与 src 相同。如果指定了此参数,那么函数只查找具有非零掩码值的元素。
示例
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 读取图像
cv::Mat img = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
if (img.empty()) {
std::cout << "无法加载图像" << std::endl;
return -1;
}
// 找到图像中的最小和最大灰度值,以及它们的位置
cv::Point minLoc, maxLoc;
double minVal, maxVal;
cv::minMaxLoc(img, &minVal, &maxVal, &minLoc, &maxLoc);
// 显示结果
std::cout << "最小值:" << minVal << ",位置:" << minLoc << std::endl;
std::cout << "最大值:" << maxVal << ",位置:" << maxLoc << std::endl;
return 0;
}
在这个示例中,我们首先读取一张灰度图像。然后使用 minMaxLoc 函数找到图像中的最小和最大灰度值,以及它们的位置。最后,我们将结果打印到控制台上。
运行输出: