OpenCV计算平均值cv::mean实例代码

前言

opencv中封装了一个专门用于求解cv::Mat均值的函数,即cv::mean(&cv::Mat),该函数会得到Mat中各个通道的均值,若要获取指定通道的均值,做进一步解析即可。

下面给出opencv的官方说明:

Operations on Arrays

函数原型

Scalar mean(InputArray src, InputArray mask = noArray());

参数说明

  1. InputArray类型的src,输入图像,如Mat类型。
  2. InputArray类型的mask,掩膜,满足要求的位置才进行计算,默认没有掩膜,即全部计算。

测试代码

#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
	cv::Mat src = cv::Mat::zeros(5, 5, CV_32FC1);
	cv::Mat mask = cv::Mat::zeros(5, 5, CV_8UC1);
	int rows = src.rows;
	int cols = src.cols;
	cv::circle(mask, cv::Point(2, 2), 2, 255, -1);
	int number = 0;
	float sum = 0.0f;
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j < cols; ++j)
		{
			if (mask.at<uchar>(i, j) == 255)
			{
				src.at<float>(i, j) = rand() % 255+rand()%100/100.0f;
				sum += src.at<float>(i, j);
				number++;
			}
		}
	}
	float result=cv::mean(src, mask==255)[0];
	float mean_ = sum / number;
	cout << "result:" << result << endl;
	cout << "mean_" << mean_ << endl;
	system("pause");
	return 0;
}

测试效果

图1 自定义矩阵数据

图2 掩膜

图3 计算结果对比

为了便于对比数据,创建了一个5*5的矩阵和掩膜,进行了平均值的计算和mean函数的调用,所得结果一致,上述测试可供大家了解函数的使用~

总结

到此这篇关于OpenCV计算平均值cv::mean的文章就介绍到这了,更多相关OpenCV计算平均值cv::mean内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • OpenCV计算平均值cv::mean实例代码

    前言 opencv中封装了一个专门用于求解cv::Mat均值的函数,即cv::mean(&cv::Mat),该函数会得到Mat中各个通道的均值,若要获取指定通道的均值,做进一步解析即可. 下面给出opencv的官方说明: Operations on Arrays 函数原型 Scalar mean(InputArray src, InputArray mask = noArray()); 参数说明 InputArray类型的src,输入图像,如Mat类型. InputArray类型的mask,掩膜

  • C#根据日期计算星期几的实例代码

    本示例采用基姆拉尔森计算公式来根据日期计算未来日子是星期几: 首先看下百度百科的基姆拉尔森计算公式定义: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数. 注意:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算. 1.客户端(采用ajax方式调用): $.get('Caculate

  • java根据开始时间结束时间计算中间间隔日期的实例代码

    具体代码如下所述: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class Test { public static List<String> findDates(String stime,

  • python自动分箱,计算woe,iv的实例代码

    笔者之前用R开发评分卡时,需要进行分箱计算woe及iv值,采用的R包是smbinning,它可以自动进行分箱.近期换用python开发, 也想实现自动分箱功能,找到了一个woe包,地址https://pypi.org/project/woe/,可以直接 pip install woe安装. 由于此woe包官网介绍及给的例子不是很好理解,关于每个函数的使用也没有很详细的说明,经过一番仔细探究后以此文记录一下该woe包的使用及其计算原理. 例子 官方给的例子不是很好理解,以下是我写的一个使用示例.以

  • php回溯算法计算组合总和的实例代码

    给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. 说明 所有数字(包括目标数)都是正整数. 解集不能包含重复的组合. 实例 输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]] 解题思路 直接参考回溯算法团灭排列/

  • python+opencv实现车牌定位功能(实例代码)

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化,实验算法仅供参考. 实验要求 对给定的车牌进行车牌识别 实验代码 代码首先贴在这里,仅供参考 源代码 实验代码如下: import cv2 import numpy as np def lpr(filename): img = cv2.imread(filename) # 预处理,包括灰度处理,高斯

  • iOS中的缓存计算和清除完整实例代码

    1.首先,一般我们项目中的缓存一般分为2大块,一个是自己缓存的一些数据;还有一个就是我们使用的SDWebImage这个第三方库给我们自动缓存的图片文件缓存了 <1>怎么计算缓存大小(主要是利用系统提供的NSFileManager类来实现) $1.单个文件大小的计算 -(long long)fileSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; if([fileMana

  • 利用C#版OpenCV实现圆心求取实例代码

    前言 OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com/shimat/opencvsharp. 该源码是 BSD开放协议,BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布或商业化销售. 1.OpenCVSharp的下载 可以直接从上面的github上下载源码,自行编译引用: 也可用vs中的nuget

  • vue2.0中vue-cli实现全选、单选计算总价格的实例代码

    由于工作的需要并鉴于网上的vue2.0中vue-cli实现全选.单选方案不合适,自己写了一个简单实用的.就短短的126行代码. <template> <div> <table> <tr> <td><input type="checkbox" v-model="checkAll">全选({{checkedCount}})</td> <td>产品名称</td> &

  • python opencv 二值化 计算白色像素点的实例

    贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import numpy as np from PIL import Image area = 0 def ostu(img): global area image=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转灰度 blur = cv2.GaussianBlur(image,(5,5),0) # 阈值一定要设为 0 !高斯模糊 re

随机推荐