1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 利用OpenCV的函数minMaxLoc()获取图像中像素的最小值 最大值以及对应的坐标值

利用OpenCV的函数minMaxLoc()获取图像中像素的最小值 最大值以及对应的坐标值

时间:2021-07-09 22:06:34

相关推荐

利用OpenCV的函数minMaxLoc()获取图像中像素的最小值 最大值以及对应的坐标值

函数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()的详细介绍大家可以参考博文:/thread-155-1-1.html

在OpenCV-C++中则可以使用函数split()把各通道进行分离,再使用函数minMaxLoc(),当然Python环境下也可以这么做,关于函数split()的详细介绍,可以参考链接 /thread-151-1-1.html,另外OpenCV-C++环境下,还可以使用函数cv::extractChannel()单独抽取出某通道哦。

使用也很简单,大家一看示例代码就知道怎么用了。

C++示例代码如下:

//出处:昊虹AI笔记网()//用心记录计算机视觉和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笔记网()# 用心记录计算机视觉和AI技术# 博主微信/QQ 2487872782# QQ群 271891601# 欢迎技术交流与咨询# OpenCV的版本为4.4.0import numpy as npimport cv2 as cvif __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()

运行结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。