OpenCV-最值计算cv::minMaxIdx&cv::minMaxLoc

简介: OpenCV-最值计算cv::minMaxIdx&cv::minMaxLoc

minMaxIdx函数原型

void minMaxIdx(InputArray src, double* minVal, double* maxVal = 0,
               int* minIdx = 0, int* maxIdx = 0, InputArray mask = noArray());


minMaxIdx参数说明

1.InputArray类型的src,输入图像,如Mat类型。

2.double*类型的minVal,最小值。

3.double*类型的maxVal,最大值。

4.int*类型的minIdx,最小值所在位置的索引

5.int*类型的maxIdx,最大值所在位置的索引

6.InputArray类型的mask,需要计算最值的范围

minMaxLoc函数原型

void minMaxLoc(InputArray src, CV_OUT double* minVal,
               CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,
               CV_OUT Point* maxLoc = 0, InputArray mask = noArray());


minMaxLoc参数说明

1.InputArray类型的src,输入图像,如Mat类型。

2.double*类型的minVal,最小值。

3.double*类型的maxVal,最大值。

4.Point*类型的minLoc,最小值所在位置的索引

5.Point*类型的maxLoc,最大值所在位置的索引

6.InputArray类型的mask,需要计算最值的范围


测试代码



#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
  // 随机生成一个矩阵
  cv::Mat src(100, 100, CV_32FC1);
  for (int i = 0; i < 100; ++i)
  {
    for (int j = 0; j < 100; ++j)
    {
      src.at<float>(i, j) = rand() % 255;
    }
  }
  double max1, min1;
  int idx_min[2] = { 255,255 }, idx_max[2] = { 255, 255 };
  cv::minMaxIdx(src,&min1,&max1, idx_min, idx_max);
  cout << "minMaxIdx:" << endl;
  cout << "min:" << min1 << endl;
  cout << "min idx:" << idx_min[0] << " " << idx_min[1] <<endl;
  cout << "max:" << max1 << endl;
  cout << "max idx:" << idx_max[0] << " " << idx_max[1] << endl;
  cv::Point maxp, minp;
  cv::minMaxLoc(src, &min1, &max1, &minp, &maxp);
  cout << "minMaxLoc:" << endl;
  cout << "min:" << min1 << endl;
  cout << "min idx:" << minp << endl;
  cout << "max:" << max1 << endl;
  cout << "max idx:" << maxp << endl;
  system("pause");
  return 0;
}



测试效果

      测试代码中,随机生成100*100的数据矩阵,minmaxIdx和minmaxLoc的区别主要在最值索引的表示不一样。minmaxIdx中用数组存放最值所在位置的行和列,比如最大值在第9行第41列;而minmaxLoc中用Point存放,Point中的x对应列,y对应行,所以是[41,9]。


      如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

目录
打赏
0
0
0
0
17
分享
相关文章
Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。
【7月更文挑战第5天】Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。CV涉及图像处理、模式识别和机器学习,用于图像理解和生成。Python的跨平台特性和活跃社区使其成为CV的理想工具。基本流程包括图像获取、预处理、特征提取、分类识别及图像生成。例如,面部识别通过预处理图像,使用如`cv2.CascadeClassifier`进行检测;物体检测类似,但需适应不同目标;图像生成则利用GAN创造新图像。
108 4
OpenCV读取视频失败<无可用信息,未为 opencv_world453.dll 加载任何符号> cv::VideoCapture
本文介绍了解决OpenCV读取视频失败的错误,指出问题通常由视频路径错误或摄像头索引错误导致,并提供了相应的解决方法。
OpenCV读取视频失败<无可用信息,未为 opencv_world453.dll 加载任何符号> cv::VideoCapture
|
8月前
|
OpenCV 图像类型标识符 CV_<bit_depth><S|U|F>C<number_of_channels>
OpenCV 图像类型标识符 CV_<bit_depth><S|U|F>C<number_of_channels>
70 0
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
153 1
【Qt&OpenCV 直方图计算 split/calcHist/normalize】
【Qt&OpenCV 直方图计算 split/calcHist/normalize】
87 0
【OpenCV】直方图计算 & 均衡化直方图
【OpenCV】直方图计算 & 均衡化直方图
255 3
【案例实战】 基于OpenCV实现鹿茸面积计算
有人询问如何计算鹿茸蜡皮面积占比。利用OpenCV实验大师工具软件,经过图像处理步骤(包括边缘检测、轮廓识别),成功计算出两个区域的面积,展示了一步到位的OpenCV解决方案。OEMTS软件旨在促进数字图像处理教学,助力成为合格的OpenCV开发者。详情见课程链接和OEMTS安装指南。
100 0
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
488 0
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
149 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等