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]。


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

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