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

【OpenCV】像素信息统计

        介绍了计算像素均值、方差的API,以及统计像素信息的方法。相关API:

  • minMaxLoc()
  • mean()
  • meanStdDev()

代码:

#include "iostream"
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int main(int argc, char *argv)
{//【单通道图像,均值】Mat src = imread("C:/Users/Administrator/Desktop/Zooey.png",IMREAD_GRAYSCALE);if (src.empty()){cout << "could not find image file" << endl;return -1;}imshow("灰度原图", src);//获取图片相关信息,并打印int w = src.cols;int h = src.rows;int ch = src.channels();cout << "w:" << w << "	h:" << h << "	ch:" << ch << endl;//求最大最小像素值,最大最小像素点double min_value;double max_value;Point minloc;Point maxloc;minMaxLoc(src, &min_value, &max_value, &minloc, &maxloc);	//取最小最大API,最后一个参数mask,在这里是限制寻找范围。注:只支持单通道。printf("min_value:%.2f	max_value:%.2f\n", min_value, max_value);	//像素值cout << "minloc:" << minloc.x << "," << minloc.y << "	maxloc:" << maxloc.x << "," << maxloc.y << endl;	//像素点//求均值Scalar s = mean(src);	//均值APIprintf("mean:%.2f\n", s[0]);//如果是彩色图像,则对应三个通道,s[0]s[1]s[2]。//【三通道彩色图像,均值、方差】Mat src1 = imread("C:/Users/Administrator/Desktop/Zooey.png", IMREAD_COLOR);if (src.empty()){cout << "could not find image file" << endl;return -1;}imshow("彩色原图", src1);Mat mm, mstd;meanStdDev(src1, mm, mstd);	//均值、方差API,第一个参数是原图,第二个参数是均值,第三个参数是方差。printf("stddev:%.2f	%.2f	%.2f\n", mstd.at<double>(0, 0), mstd.at<double>(1, 0), mstd.at<double>(2, 0));	//打印三个通道的方差,单通道只有0,0cout << "mm:" << mm.at<double>(0, 0) << "   " << mm.at<double>(1, 0) << "   " << mm.at<double>(2, 0) << endl;	//打印三个通道的均值,单通道只有0,0//【像素值统计信息,即统计某一像素数值有多少个】vector<int> hist(256);	//创建一个vector容器,C++知识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]++;}}waitKey(0);destroyAllWindows();return 0;
}

内容都在注释里讲得很清楚了。注意有些API只适用于单通道。

还要注意meanStdDev()返回的对象是Mat类型,以及如何通过这个Mat对象获取我们想要的信息。

第三部分像素统计,是统计某一像素值在一幅图片中有多少个。像素值0-255总共256个,所以创建一个大小为256的vector,将像素值作为下标,其对应的值作为出现次数,没遍历到一个像素值,就在这个值作为下标的位置+1进行累加,最后就可以知道这个像素值总共出现了多少次。

小应用。方差代表波动,纯色图像的方差为0,可以以此来识别纯色图像。

演示:

相关文章:

  • redis数据类型之string,list
  • zabbix配置自动发现规则模版-snmp
  • 谢宁DOE培训适合哪些人?
  • Java面试八股之自旋是什么意思
  • 聚酯输送带的原材料
  • 在winnas中使用docker desktop遇到的问题及解决方法记录
  • 【C++】构造函数、析构函数、拷贝构造与运算符重载
  • 乡村振兴的乡村旅游新模式:挖掘乡村旅游资源,创新旅游开发方式,打造乡村旅游新品牌,助力美丽乡村建设
  • 迅睿 CMS 中开启【ionCube 扩展】的方法
  • LVM、磁盘配额
  • 免费分享一套SpringBoot+Vue企业客户关系CRM管理系统【论文+源码+SQL脚本+PPT】,帅呆了~~
  • 现在AI发展迅猛的情况下,应届生选择Java还是C++?
  • 13、设计模式之观察者模式
  • 视频汇聚平台LntonCVS视频监控系统前端错误日志记录及Debug模式详细讲解
  • 域名绑定ip和端口的方法是什么?
  • 【翻译】babel对TC39装饰器草案的实现
  • 【附node操作实例】redis简明入门系列—字符串类型
  •  D - 粉碎叛乱F - 其他起义
  • Django 博客开发教程 8 - 博客文章详情页
  • EventListener原理
  • Java基本数据类型之Number
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • MySQL主从复制读写分离及奇怪的问题
  • orm2 中文文档 3.1 模型属性
  • Python语法速览与机器学习开发环境搭建
  • Redis的resp协议
  • SpringBoot几种定时任务的实现方式
  • TypeScript迭代器
  • VUE es6技巧写法(持续更新中~~~)
  • Vue官网教程学习过程中值得记录的一些事情
  • Windows Containers 大冒险: 容器网络
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 将 Measurements 和 Units 应用到物理学
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 码农张的Bug人生 - 初来乍到
  • 排序算法学习笔记
  • 我有几个粽子,和一个故事
  • 写给高年级小学生看的《Bash 指南》
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • (2015)JS ES6 必知的十个 特性
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (arch)linux 转换文件编码格式
  • (笔记)M1使用hombrew安装qemu
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (算法)求1到1亿间的质数或素数
  • (小白学Java)Java简介和基本配置
  • (学习日记)2024.01.09
  • .net 调用海康SDK以及常见的坑解释
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @Autowired和@Resource的区别