目录
2.3 cv::minMaxLoc()和cv::minMaxIdx()函数的差异
1 图像像素的最大值与最小值介绍
图像的最大值和最小值表示图像中的最亮和最暗像素的强度值。这些值通常用于对比度调整、灰度级伸展等图像处理操作中。在OpenCV中,这些值通过遍历图像的每个像素,并与当前所记录的最大值和最小值进行比较来获得。
2 图像像素的最大值与最小值API详解
2.1 minMaxLoc()函数
cv::minMaxLoc(const cv::Mat& src, double* minVal, double* maxVal, cv::Point* minLoc = 0, cv::Point* maxLoc = 0, const cv::Mat& mask = cv::Mat());
该函数可用于获取图像中的最小值、最大值及其对应的位置。
Mat src:是输入图像,必须是单通道的图像。
minVal:是输出参数,用于存储最小值。
maxVal:是输出参数,用于存储最大值。
minLoc:是一个可选参数,用于存储最小值在图像中的位置。
maxLoc:是一个可选参数,用于存储最大值在图像中的位置。
mask:是一个可选参数,用于指定感兴趣区域(ROI),只有在指定区域内计算最小值和最大值。
2.2 minMaxIdx()函数
cv::minMaxIdx(const cv::Mat& src, double* minVal, double* maxVal, int* minIdx = 0, int* maxIdx = 0, const cv::Mat& mask = cv::Mat())。
函数:与cv::minMaxLoc()函数类似,也可以用来获取图像中的最小值、最大值及其对应的索引。参数和返回值与cv::minMaxLoc()函数相同。
2.3 cv::minMaxLoc()和cv::minMaxIdx()函数的差异
cv::minMaxLoc()返回最小值和最大值的位置坐标(x, y)。
cv::minMaxIdx()返回最小值和最大值在图像中的索引。
3 代码实现
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
//读取图像
Mat src = imread("lena.png",IMREAD_GRAYSCALE);
if (src.empty())
{
cout << "could not load image" << endl;
}
// 定义变量存储最小值、最大值
double minValue, maxValue;
// 定义变量存储最小值、最大值坐标
Point minLoc, maxLoc;
// 获取最小值、最大值
cv::minMaxLoc(src, &minValue, &maxValue,&minLoc,&maxLoc);
// 打印最小值、最大值及坐标
std::cout << "Min value: " << minValue << std::endl;
std::cout << "Max value: " << maxValue << std::endl;
std::cout << "Min Loc: " << minLoc << std::endl;
std::cout << "Max Loc: " << maxLoc << std::endl;
//显示时间
return 0;
}
上述代码中,首先使用cv::imread()函数读取一张灰度图像。然后,定义变量minValue、maxValue、minLoc、maxLoc用于存储最小值和最大值以及坐标位置。接下来,使用cv::minMaxLoc()函数获取图像的最小值和最大值。最后,通过std::cout输出打印最小值和最大值。请确保在编译时链接OpenCV库并包含相关头文件。