OpenCV中的函数minMaxLoc()用于找出矩阵中的最大值和最小值,并且给出它们中的坐标。
函数原型如下:
C++原型有两个,分别如下:

C++原型一:

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

参数意义如下:
src—输入矩阵,要求是单通道的图像,即二维的矩阵。
minVal—矩阵中的最小值。
maxVal—矩阵中的最大值。
minLoc—矩阵中的最小值的坐标。
maxLoc—矩阵中的最大值的坐标。
mask—掩模矩阵。

C++原型二:

void cv::minMaxLoc   (   const SparseMat &   a,
double *    minVal,
double *    maxVal,
int *   minIdx = 0,
int *   maxIdx = 0
)

参数意义如下:
a—输入矩阵,要求是单通道的图像,即二维的矩阵。
minVal—矩阵中的最小值。
maxVal—矩阵中的最大值。
minIdx—矩阵中最小值的坐标。
maxIdx—矩阵中最大值的坐标。

Python原型如下:

minVal, maxVal, minLoc, maxLoc   =  cv.minMaxLoc(   src[, mask] )

参数意义如下:
src—输入矩阵,要求是单通道的图像,即二维的矩阵。
minVal—矩阵中的最小值。
maxVal—矩阵中的最大值。
minLoc—矩阵中的最小值的坐标。
maxLoc—矩阵中的最大值的坐标。
mask—掩模矩阵。

使用中需注意以下两点:
1 矩阵只能是一维或二维的矩阵,如果是二维以上的矩阵,需要先进行降维处理,比如使用函数reshape()完成,reshape()函数的使用方法可参见下面这篇我的博文:
https://blog.csdn.net/wenhao_ir/article/details/123514750
2 其返回的坐标是列在前,行在后,而不是行在前,列在后,实例如下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
# 图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
# OpenCV的版本为4.1import cv2 as cv
import numpy as np# 新建矩阵array
array = np.array([1, 2, 3, 4, 5, 6, 10, 7, 8, 9, 10, 0])
# 将array调整为3*4的单通道图像
img1 = array.reshape((3, 4))
minval_1, maxval_1, minloc_1, maxloc_1 = cv.minMaxLoc(img1)
temp1 = img1[2, 1]
temp2 = img1[1, 2]
print('图像img1中最小值为:{}, 其位置为:{}' .format(minval_1, minloc_1))
print('图像img1中最大值为:{}, 其位置为:{}' .format(maxval_1, maxloc_1))

运行结果如下图所示:

而矩阵img1的内容如下图所示:

可以看出,如果按行在前,列在后,其最小点的坐标应该为(2,3),而不是运行结果中的(3,2),这一点大家在使用中应该特别注意。

使用OpenCV-Python的函数minMaxLoc()应该注意的两点相关推荐

  1. opencv python 中cv2.putText()函数的用法

    opencv python 中cv2.putText()函数的用法 文章目录: 一.快速使用 二.官方文档 三.使用举例 虽然用啦很多次,还是决定记录一下 一.快速使用 cv2.putText(ima ...

  2. opencv python cv2.imdecode()函数报错 :TypeError: Expected cv::UMat for argument 'buf'

    原因:data_total是<class 'bytes'>类型的, imdecode()函数貌似没法解,它貌似只能解numpy数组.... 参见:python opencv cv2.imd ...

  3. OpenCV Python教程(3)(4)(5): 直方图的计算与显示 形态学处理 初级滤波内

    OpenCV Python教程(3.直方图的计算与显示) 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途 ...

  4. 【OpenCV + Python】模板匹配

    模板匹配是用来在一副大图中搜寻查找模版图像位置的方法.OpenCV 为我们提供了函数:cv2.matchTemplate().和2D 卷积一样,它也是用模板图像在输入图像(大图)上滑动,并在每一个位置 ...

  5. OpenCV—python 模板匹配与图像特征匹配

    文章目录 一.理论介绍与算法 二.算法代码 单目标匹配 多目标匹配 三 多尺度模板匹配 一.理论介绍与算法 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个 ...

  6. 学习Opencv+Python之银行卡卡号识别

    学习Opencv+Python之银行卡卡号识别 思路: 获取模板轮廓 获取模板中每个数字的轮廓 获取银行卡卡号轮廓 分别提取卡号中的每个数字的轮廓 对比识别 代码: # 导入工具包 from imut ...

  7. OpenCV+python:Canny边缘检测算法

    1,边缘处理 图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用. 在空域运算中来说,对图像的锐化就是计算微分.由于数字 ...

  8. OpenCV+python:模板匹配

    1,模板匹配的概念及原理 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术. 我们需要2幅图像: 模板 (T): 将和原图像比照的图像块 原图像 (I): 在这幅图像里,我们希望 ...

  9. OpenCV Python在计算机视觉中的应用

    OpenCV Python教程 在这篇文章中,我们将使用Python中的OpenCv来涵盖计算机视觉的各个方面.OpenCV长期以来一直是软件开发的重要组成部分. 什么是计算机视觉? 我们考虑一个场景 ...

最新文章

  1. 偶然发现静态函数与性能一例
  2. linux yum 本地源配置
  3. Devstack配置负载均衡,负载均衡版本V2
  4. LINUX下忘记MySQL的ROOT密码后修改,以及添加访问IP。
  5. googlehelper手机版ios_二次元漫画控iOS苹果手机版下载v1.0.0下载|免费二次元漫画控iOS苹果手机版下载绿色版...
  6. zabbix3.2.4监控MySQL5.7.16状态
  7. Linux下没有包含头文件(不知是哪个)导致编译无法通过的解决心得
  8. [css] span与span之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
  9. 管理员信息模块php,管理员模块功能代码
  10. 使用Kotlin的Android Toast
  11. Swift 06.Closures
  12. Python请求外部POST请求,常见四种请求体
  13. c语言程序设计九宫格,C语言课程设计之智力九宫格.doc
  14. 什么情况下会用上568A线序
  15. 超威主板关闭超线程教程
  16. 【图像处理】自动报靶系统(重弹孔)【含GUI Matlab源码 973期】
  17. 百度地图 根据经纬度获取 地址
  18. 一款基于Vue的自适应Web在线音乐播放器
  19. 特拉华大学计算机科学怎么样,2020年特拉华大学排名TFE Times美国最佳计算机科学硕士专业排名第84...
  20. 1.6 建立Servers服务(2020-12-6)

热门文章

  1. python csv读取-Python读取csv文件(详解版,看了无师自通)
  2. 大学计算机基础课程报告python-大学计算机基础
  3. python基本语法规则-python基础知识——基本语法
  4. python项目设计-Python:实际项目中抽象出的小项目设计
  5. python一次性读取整个文件-python逐行读取文件内容的三种方法
  6. redis中的list
  7. rocket mq整体架构
  8. Model/View 教程
  9. 系统调用和库函数调用的区别
  10. Activity的使用(四):两个activity的交互