赞
踩
函数minMaxLoc()的原型如下:
C++原型:
void cv::minMaxLoc(InputArray src,
double * minVal,
double * maxVal = 0,
Point * minLoc = 0,
Point * maxLoc = 0,
InputArray mask = noArray() )
Python原型:
minVal, maxVal, minLoc, maxLoc=cv.minMaxLoc(src[, mask])
参数意义很简单,官方文档原文如下:
src—input single-channel array.
minVal—pointer to the returned minimum value; NULL is used if not required.
maxVal—pointer to the returned maximum value; NULL is used if not required.
minLoc—pointer to the returned minimum location (in 2D case); NULL is used if not required.
maxLoc—pointer to the returned maximum location (in 2D case); NULL is used if not required.
mask—optional mask used to select a sub-array.
要注意的是,
函数minMaxLoc()只能处理单通道的图像或矩阵,
如果大于了二维,
在Python中可以用函数reshape()先把矩阵形状进行调整,再使用函数minMaxLoc(),关于函数reshape()的详细介绍大家可以参考博文:https://www.hhai.cc/thread-155-1-1.html
在OpenCV-C++中则可以使用函数split()把各通道进行分离,再使用函数minMaxLoc(),当然Python环境下也可以这么做,关于函数split()的详细介绍,可以参考链接 https://www.hhai.cc/thread-151-1-1.html,另外OpenCV-C++环境下,还可以使用函数cv::extractChannel()单独抽取出某通道哦。
使用也很简单,大家一看示例代码就知道怎么用了。
C++示例代码如下:
//出处:昊虹AI笔记网(hhai.cc) //用心记录计算机视觉和AI技术 //博主微信/QQ 2487872782 //QQ群 271891601 //欢迎技术交流与咨询 //OpenCV版本 OpenCV3.0 #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { cv::Mat A1 = (cv::Mat_<uchar>(3, 3) << 1, 2, 3, 6, 7, 8, 11, 88, 13); cout << "A1中的数据为:\n" << A1 << endl << endl; double minval_1, maxval_1; Point minloc_1, maxloc_1; cv::minMaxLoc(A1, &minval_1, &maxval_1, &minloc_1, &maxloc_1); cout << "A1中的最小值为:\n" << minval_1 << endl << endl; cout << "A1中的最大值为:\n" << maxval_1 << endl << endl; cout << "A1中的最小值的位置为:\n" << minloc_1 << endl << endl; cout << "A1中的最大值的位置为:\n" << maxloc_1 << endl << endl; return(0); }
运行结果如下:
Python示例代码如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- # 出处:昊虹AI笔记网(hhai.cc) # 用心记录计算机视觉和AI技术 # 博主微信/QQ 2487872782 # QQ群 271891601 # 欢迎技术交流与咨询 # OpenCV的版本为4.4.0 import numpy as np import cv2 as cv if __name__ == '__main__': A1 = np.array([[1, 2, 3], [6, 7, 8], [11, 88, 13]], dtype='int8') minval_1, maxval_1, minloc_1, maxloc_1 = cv.minMaxLoc(A1) print('A1中最小值为:{}, 其位置为:{}'.format(minval_1, minloc_1)) print('A1中最大值为:{}, 其位置为:{}'.format(maxval_1, maxloc_1)) # 关闭窗口 cv.waitKey(0) cv.destroyAllWindows()
运行结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。