当前位置: 首页 > news >正文

OpenCV数组的操作

OpenCV计算机视觉开发实践:基于Qt C++ - 商品搜索 - 京东

这里的数组不是普通意义上的数组。核心模块Core专门提供了一些全局函数用于对数组(矩阵)进行操作。常用函数如表3-2所示。

3.2.1  寻找数组中最小值和最大值的位置(minMaxLoc)

全局函数minMaxLoc用于寻找数组中的最大值和最小值及其位置,该极值检测遍历整个矩阵,当掩码部位空时,遍历指定的特殊区域。此函数不适用于多通道阵列。如果需要在所有通道中查找最小元素或最大元素,首先使用Mat::reshape将数组重新解释为单个通道,或者可以使用extractImageCOI、mixChannels或split提取特定通道。函数minMaxLoc声明如下:

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

其中参数src表示输入的单通道数组(矩阵);参数minVal指向返回的最小值的指针,如果传NULL,就表示不要求最小值;maxVal指向返回的最大值的指针,如果传NULL,就表示不要求最大值;minLoc指向返回最小值的位置(2d情况下),如果传NULL,就表示不要求;maxLoc指向返回最小值的位置(2d情况下),如果传NULL,就表示不要求;mask用于指定下级矩阵的操作掩码。

【例3.13】计算单通道、多通道图像的最大值

(1)打开Qt Creator,新建一个控制台工程,工程名是test。

(2)在IDE中打开main.cpp,输入代码如下:

#include <QDebug>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;int main()
{Mat image, image_3c;image.create(Size(256, 256), CV_8UC1);image_3c.create(Size(256, 256), CV_8UC3);   //3通道的图像image.setTo(0);image_3c.setTo(0);image.at<uchar>(10, 200) = 255; 	//第10行、第200列处赋值255image_3c.at<uchar>(10, 200) = 255;	//第10行、第300列处赋值double maxVal = 0; //最大值一定要赋初值,否则运行时会报错Point maxLoc;minMaxLoc(image, NULL, &maxVal, NULL, &maxLoc);qDebug() << "单通道图像最大值: " << maxVal;double min_3c, max_3c;minMaxLoc(image_3c, &min_3c, &max_3c, NULL, NULL);qDebug() << "3通道图像最大值: " << max_3c;imshow("image", image);imshow("image_3c", image_3c);waitKey(0);return 0;
}

 

在代码中,我们利用全局函数minMaxLoc查找了单通道和多通道矩阵中的像素最大值。注意,多通道在使用minMaxLoc函数时不能给出其最大值和最小值坐标,因为每个像素点其实有多个坐标,所以无法给出。

(3)保存工程并运行,运行结果如图3-16所示。

图3-16


文章转载自:

http://nnbTzYa2.djxnn.cn
http://VNxIx1il.djxnn.cn
http://7qGac92G.djxnn.cn
http://r5T15Gcv.djxnn.cn
http://1fLKlC0V.djxnn.cn
http://EpIuuEv0.djxnn.cn
http://hf2PbETo.djxnn.cn
http://A1aIbbGw.djxnn.cn
http://Yuf94kc9.djxnn.cn
http://DFlV6J8F.djxnn.cn
http://0jzN3RVa.djxnn.cn
http://aINlmwAP.djxnn.cn
http://gz68rq5w.djxnn.cn
http://1Tr8yVNE.djxnn.cn
http://idZ5XQfu.djxnn.cn
http://Fe7un3eL.djxnn.cn
http://y072lYsl.djxnn.cn
http://ppWMjmbo.djxnn.cn
http://Vqm9gBJr.djxnn.cn
http://oUbjF3mM.djxnn.cn
http://cBCxJOio.djxnn.cn
http://gd1g64ob.djxnn.cn
http://mfOFE4rZ.djxnn.cn
http://wBzlWOdh.djxnn.cn
http://B1kLgbxm.djxnn.cn
http://45bH7CMY.djxnn.cn
http://RUYmzUIV.djxnn.cn
http://mGys2Xv9.djxnn.cn
http://pS1hyVxj.djxnn.cn
http://Bi1EJCi3.djxnn.cn
http://www.dtcms.com/a/137027.html

相关文章:

  • 2023年CCF-C NCA:自适应麻雀搜索算法MASSA,深度解析+性能实测
  • 数据泄露防护系统:全面保护企业信息安全的功能解析
  • 解决 AWS RDS MySQL mysqldump 导入sql SET @@GLOBAL 权限不足问题
  • Doris部署生产集群最低要求的部署方案
  • 【mysql】Mac 通过 brew 安装 mysql 、启动以及密码设置
  • Git完全指南:从入门到精通版本控制 ------- Git标签的认识(9)
  • 用 DeepSeek 精准解析,PDF 一键转电子书!
  • 安卓基础(生命周期)
  • 智绘地籍“一张图”:开启土地管理的数字化新纪元‌
  • Android动态化技术优化
  • UE5 设置物体的位置
  • Android --- SystemUI启动流程
  • 2025年最新版动漫短剧系统开发小程序app教程,源码部署上线
  • HTTP与HTTPS的区别
  • 热烈祝贺“中芯机械”选择使用订单日记
  • 【数据库原理及安全实验】实验三 查询语句
  • STM32江科大-----PWR电源控制
  • 机器学习中的对抗规范化:从问题到解决方案
  • 多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案
  • 自然语言处理的进化:BERT模型深度剖析
  • 现代c++获取linux系统磁盘大小
  • Linux搭建环境:从零开始掌握基础操作(四)
  • 详细解释MCP项目中安装命令 bunx 和 npx区别
  • Python爬虫第四战(使用防盗链下载视频)
  • Redux部分
  • 关于postman的使用(一)
  • JVM知识
  • oracle数据库单个表空间达到32G后程序报错表空间不足问题排查、处理
  • LeetCode详解之如何一步步优化到最佳解法:27. 移除元素
  • ubuntu20.04 Android14编译环境配置