首页 > 其他分享 >单张图像像素平均值和标准差:mean( ) meanStdDev( )

单张图像像素平均值和标准差:mean( ) meanStdDev( )

时间:2024-08-21 14:04:34浏览次数:10  
标签:meanStdDev int name ++ mean type 单张 size

学OpenCV

===========================================

根据公式,这个mean在这里是平均值

mask只能用单通道的uchar类型。

===========================================

  1 #include <iostream>
  2 
  3 #include <opencv2/opencv.hpp>
  4 #include <opencv2/core/utils/logger.hpp>
  5 
  6 
  7 template <typename T>
  8 T* MakeSerialArr(int datasize)
  9 {
 10     T* ptr = new T[datasize];
 11     for (int i = 0; i < datasize; i++)
 12     {
 13         ptr[i] = (T)i;
 14     }
 15     return ptr;
 16 }
 17 
 18 #define SerialArr_Heap(name,type,size) \
 19     type* name = new type[size];\
 20     for (int i = 0; i < size; i++) \
 21     {\
 22         name[i] = (type)i;\
 23     }
 24 
 25 #define SerialArr_Stack(name,type,size) \
 26     type name[size]={};\
 27     for (int i = 0; i < size; i++) \
 28     {\
 29         name[i] = (type)i;\
 30     }
 31 
 32 
 33 void Test1()
 34 {
 35     SerialArr_Stack(arr, int, 5*5*3);
 36 
 37     cv::Mat img(5, 5, CV_32SC3, arr);
 38     int channels = img.channels();
 39 
 40     cv::Scalar sarr1=cv::mean(img);
 41     
 42     for (int i = 0; i < channels; i++)
 43     {
 44         std::cout <<"Test1 mean " << sarr1[i] << std::endl;
 45     }
 46 
 47     uchar arr2[] = {    1,1,1,1,1,
 48                         1,1,1,1,1,
 49                         0,0,0,0,0,
 50                         0,0,0,0,0 ,
 51                         0,0,0,0,0 };
 52 
 53     cv::Mat mask(5, 5, CV_8UC1,arr2);
 54 
 55     cv::Scalar sarr2 = cv::mean(img,mask);
 56 
 57     for (int i = 0; i < channels; i++)
 58     {
 59         std::cout << "Test1 mean with mask " << sarr2[i] << std::endl;
 60     }
 61 }
 62 
 63 void Test2()
 64 {
 65     SerialArr_Stack(arr, int, 5 * 5 * 3);
 66 
 67     cv::Mat img(5, 5, CV_32SC3, arr);
 68     int channels = img.channels();
 69     
 70     cv::Scalar mean, stddev;
 71     cv::meanStdDev(img,mean,stddev);
 72 
 73     for (int i = 0; i < channels; i++)
 74     {
 75         std::cout << "Test2 mean " << mean[i] << std::endl;
 76     }
 77     for (int i = 0; i < channels; i++)
 78     {
 79         std::cout << "Test2 stddev " << stddev[i] << std::endl;
 80     }
 81 
 82     uchar arr2[] = { 0,0,1,0,0,
 83                     0,1,1,1,0 ,
 84                     1,1,1,1,1 ,
 85                     0,1,1,1,0 ,
 86                     0,0,1,0,0 };
 87 
 88     cv::Mat mask(5, 5, CV_8UC1, arr2);
 89     cv::Scalar mean2, stddev2;
 90     cv::meanStdDev(img,mean2,stddev2);
 91 
 92     for (int i = 0; i < channels; i++)
 93     {
 94         std::cout << "Test2 mean with mask" << mean2[i] << std::endl;
 95     }
 96     for (int i = 0; i < channels; i++)
 97     {
 98         std::cout << "Test2 stddev with mask" << stddev2[i] << std::endl;
 99     }
100 }
101 
102 int main()
103 {
104     cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_ERROR);
105     
106     Test1();
107     Test2();
108 
109     cv::waitKey(0);
110 
111     return 0;
112 }

 效果

 

标签:meanStdDev,int,name,++,mean,type,单张,size
From: https://www.cnblogs.com/wlsandwho/p/18371470

相关文章

  • 【实验报告】一种基于邻域嵌入的单张图像超分辨率重建方法
    摘 要:图像超分辨率重建(Super-ResolutionImageReconstruction,SRIR)旨在从给定的低分辨率图像中,重建含有清晰细节特征的高分辨率图像,是计算机视觉和图像处理领域中的一项重点研究任务。本文首先对图像重建方法进行系统分类,分为基于插值、基于重建、基于学习(深度学习前、后)三......
  • 实战教程:Python实现高校爬虫,运用协同过滤与k-means算法进行专业评分分析
    ......
  • dyMEAN代码分析
    这段代码的作用是生成一个cmask列表,用于指示在模型的预测过程中,哪些残基的坐标需要被生成(预测),哪些残基的坐标是固定的(不需要预测)。以下是对这行代码的详细解读:1.背景信息cmask:这是一个掩码(mask),用于指定哪些坐标需要生成(由模型预测),哪些坐标保持固定(不变)。0表示坐标是固......
  • 第九天:K-Means算法
    K-Means算法简介K-Means算法是一种广泛使用的聚类算法,旨在将数据集分成K个预定义的簇。每个簇的中心是簇中所有点的均值,称为质心。K-Means算法的目标是最小化每个数据点到其所属簇的质心的距离的平方和。算法原理K-Means算法的工作原理可以分为以下几个步骤:初始化:随机......
  • Kmeans聚类算法(用于魔方机器人的色片分类及应用拓展)
    K-means聚类是一种广泛使用的无监督学习算法,用于将数据点分成K个聚类。它的主要目标是最小化每个聚类内数据点到聚类中心的距离之和,从而使得每个聚类内的数据点相似性最大,而不同聚类之间的差异性最大。目录1.K-means聚类的基本步骤1.1选择K个初始中心点1.2将每个数......
  • 【无人机通信】K-means聚类和粒子群优化最大限度地覆盖无人机辅助地面设备地面区域和
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信或扫描文章底部QQ二维码。......
  • dyMEAN数据集
    这条数据看起来是描述一个抗体-抗原复合物(来自PDB的6BKD结构)的详细信息,包括链的编号、序列、CDR区域等。以下是对每个字段的详细解释:总体结构pdb:"6bkd"PDBID,是一个四位字母代码,用于标识蛋白质数据库(PDB)中的一个特定的结构。这条数据描述的是PDBID为6bkd的结构。he......
  • 【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记
        示例案例为了更好地理解K-Means算法,下面通过一个简单的案例进行说明。假设我们有以下10个二维数据点,表示不同商店的销售额(单位:千元)和顾客数(单位:人):[(10,100),(20,80),(30,70),(40,60),(50,50),(60,40),(70,30),(80,20),(90,10),(......
  • 【创新未发表】Matlab实现蚁狮优化算法ALO-Kmean-Transformer-LSTM组合状态识别算法研
    蚁狮优化算法(AntLionOptimisation,ALO)是一种启发式优化算法,灵感来源于蚁狮捕食过程中的行为。这种算法模拟了蚁狮捕食中的策略,其中蚁狮通过在环境中设置虚拟陷阱来吸引蚂蚁,然后捕食这些落入陷阱的蚂蚁。在算法中,蚁狮代表潜在解决方案,而虚拟陷阱代表目标函数的局部最小值。......
  • 数据集相关类代码回顾理解 | np.mean\transforms.Normalize\transforms.Compose\xx
    数据集相关类代码回顾理解|StratifiedShuffleSplit\transforms.ToTensor\Counter目录np.meantransforms.Normalizetransforms.Composexxx.transformnp.meanmeanRGB=[np.mean(x.numpy(),axis=(1,2))forx,_intrain_ds]计算每个样本的(RGB)均值  。NumPy库np.......