c++、OpenCV第一章:详细解释 minMaxLoc 函数、像素值统计信息

1.详细解释 minMaxLoc 函数

minMaxLoc 是 OpenCV 中的一个函数,用于查找矩阵或图像中的最小值和最大值,以及它们各自的位置。函数原型如下:

void minMaxLoc(InputArray src, double* minVal, double* maxVal, Point* minLoc = 0, Point* maxLoc = 0, InputArray mask = noArray());
  • src:输入的矩阵或图像。
  • minVal:指向存储最小值的指针。
  • maxVal:指向存储最大值的指针。
  • minLoc:指向存储最小值位置的指针(可选)。
  • maxLoc:指向存储最大值位置的指针(可选)。
  • mask:可选的操作掩码,指定要考虑的元素(默认为不使用掩码)。

举例:

// 最大最小值
double min_val;
double max_val;
Point minloc;
Point maxloc;
minMaxLoc(src, &min_val, &max_val, &minloc, &maxloc);
printf("min:%.2f, max: %.2f\n", min_val, max_val);
  • src:输入的矩阵或图像。
  • &min_val:指向 min_val 的指针,用于存储最小值。
  • &max_val:指向 max_val 的指针,用于存储最大值。
  • &minloc:指向 minloc 的指针,用于存储最小值的位置。
  • &maxloc:指向 maxloc 的指针,用于存储最大值的位置。

minMaxLoc 函数会遍历整个矩阵或图像,找到最小值和最大值,并记录它们的位置。

2.像素值统计信息:
 

// 像素值统计信息
vector<int> hist(256);
for (int i = 0; i < 256; i++) {
    hist[i] = 0;
}
for (int row = 0; row < h; row++) {
    for (int col = 0; col < w; col++) {
        int pv = src.at<uchar>(row, col);
        hist[pv]++;
    }
}

   hist[pv]++详解:

  • hist 是一个大小为 256 的向量,每个元素初始化为 0。
  • pv 是当前像素的灰度值,范围是 0 到 255。
  • hist[pv]++ 表示将 hist 向量中索引为 pv 的元素加 1。
  • 这一步的作用是统计灰度值为 pv 的像素出现的次数。

假设有一个 3x3 的灰度图像 src:

cv::Mat src = (cv::Mat_<uchar>(3, 3) << 0, 1, 2,
                                        1, 2, 3,
                                        2, 3, 4);

. 结果:

  • hist[0] = 1(灰度级别 0 出现 1 次)
  • hist[1] = 2(灰度级别 1 出现 2 次)
  • hist[2] = 3(灰度级别 2 出现 3 次)
  • hist[3] = 2(灰度级别 3 出现 2 次)
  • hist[4] = 1(灰度级别 4 出现 1 次)

int pv = src.at<uchar>(row, col)详解:

  • src.at<uchar>(row, col) 获取图像在 (row, col) 位置的像素值。
  • uchar 表示无符号字符类型(unsigned char),适用于灰度图像的像素值(0 到 255)。
  • pv 是当前像素的灰度值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值