【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,可以以此来识别纯色图像。

演示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谈谈如何建立可落地的数字化转型战略

数字化转型战略是指将数字技术集成到企业或组织的所有领域&#xff0c;从根本上改变其运营方式以及为客户提供价值的方式。它涉及采用新技术并重新思考现有业务流程&#xff0c;以提高效率、生产力和客户满意度。 成功的数字化转型战略需要采用涉及人员、流程和技术的整体方法。…

【全开源】JAVA同城搬家系统源码小程序APP源码

JAVA同城搬家系统源码 特色功能&#xff1a; 强大的数据处理能力&#xff1a;JAVA提供了丰富的数据结构和算法&#xff0c;以及强大的并发处理能力&#xff0c;使得系统能够快速地处理大量的货物信息、司机信息、订单信息等&#xff0c;满足大规模物流的需求。智能路径规划&a…

香橙派 AIPro开发板上手测评

前言 最近拿到了一个新玩具&#xff1a;香橙派 AIPro。一个只比银行卡大一点点的开发板能带给我们多少惊喜呢&#xff1f;接下来就跟我一起来体验下这块开发板的魅力。 一、硬件配置 CPU&#xff1a;配备了4核64位ARM处理器&#xff0c;其中默认预留1个给AI处理器使用 NPU&am…

SpringBoot和Apache Doris实现实时广告推荐系统

本专题旨在向读者深度解读Apache Doris技术,探讨其与SpringBoot框架结合在各类实际应用场景中的角色与作用。本专题包括十篇文章,每篇文章都概述了一个特定应用领域,如大数据分析、实时报告系统、电商数据分析等,并通过对需求的解析、解决方案的设计、实际应用示例的展示以…

【Python实战】你还在冲会员看电影电视剧吗?Python带你实现各大资源免费看!

前言 halo&#xff0c;包子们下午好 今天给大家实现一个视频播放器&#xff0c;可以看任何电影&#xff0c;电视剧&#xff0c;不要再为以后看电视看电影而烦恼&#xff0c;今天是福利文章&#xff0c;相信我绝对有用&#xff01; 开发工具 Python版本&#xff1a;3.7.8 相…

Java Lambda 会影响性能吗?

# 测试代码LamdaTest.java import java.util.*;class LamdaTest {static volatile List<Integer> integers new ArrayList<Integer>();// 普通 for 循环测试public static int forLoopInteger() {int total 0;for (int i 0; i < integers.size(); i) {total…

驱动未来:IT行业的现状与发展趋势

前言 随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。本文将探讨IT行业的现状和未来发展趋势&#xff0c;并邀请行业领袖、技术专家和…

Follow Your Pose: Pose-Guided Text-to-Video Generation using Pose-Free Videos

清华深&港科&深先进&Tencent AAAI24https://github.com/mayuelala/FollowYourPose 问题引入 本文的任务是根据文本来生成高质量的角色视频&#xff0c;并且可以通过pose来控制任务的姿势&#xff1b;当前缺少video-pose caption数据集&#xff0c;所以提出一个两…

Java的上下转型与多态

上下转型 首先&#xff0c;定义一个父类Person // 父类 class Person {public void run(){System.out.println("person 中的 run");}public void eat(){System.out.println("Person 中的 eat");}}接着定义一个继承自父类的子类Student: // 子类 class S…

拿捏数据结构- 链式二叉树

链式二叉树的概念&#xff1a; 链式二叉树解决的是非完全二叉树解决不了的问题 什么意思呢&#xff0c;简单的说就是&#xff0c;链式二叉树 可以是下面三种二叉树 但是非链式二叉树只能是前两种 链式二叉树的存储 节点结构&#xff1a;首先定义一个结构体或类来表示二叉树的节…

机器学习-7-机器学习中常用的可视化方式总结

参考通透!!监督学习和无监督学习全总结! 参考机器学习中的可视化 1 监督学习和无监督学习 监督学习和无监督学习,它们之间的主要区别在于训练数据的标签信息是否提供。 1.1 概述 一、监督学习(Supervised Learning): (1)标签信息: 监督学习使用带有标签的训练数据。这…

单元测试的实现方式

单元测试的实现方式包括&#xff1a;人工静态检查、动态执行跟踪 人工静态检查 人工静态检查是一种单元测试实现方式&#xff0c;它主要依赖开发人员的人工代码审查和静态分析工具来识别潜在的代码问题。 代码审查&#xff1a;开发人员通过仔细检查代码来发现潜在的问题。他…

不怕YOLOv10高歌猛进,我有YOLOv8稳扎稳打

YOLOv10 出来有几天时间了&#xff0c;这次我没有选择第一时间出文章解析&#xff0c;如此频繁的发布数字版本的 YOLO 着实让人头疼&#xff0c;虽然数字的更新并非旧版技术的过时&#xff0c; 但是这肯定会让很多在校同学增加很多焦虑情绪。这里还是请大家辩证看待。 v10 这次…

解密消息队列的复制魔法:RocketMQ vs Kafka

解密消息队列的复制魔法&#xff1a;RocketMQ vs Kafka 今天我们来聊聊一个在消息队列世界中至关重要的主题&#xff1a;消息复制。消息复制不仅能防止消息丢失&#xff0c;还能确保系统的高可用性。即使某个节点宕机了&#xff0c;其他节点依然可以继续工作。那么&#xff0c…

区间选点问题-贪心-C++

问题&#xff1a; 给定 &#x1d441; 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 &#x1d441;&#xff0c;表示区间数…

CSS文本粒子动画特效之爱心粒子文字特效-Canvas

1. 效果图 2.完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;paddin…

order by工作过程和优化

工作过程 order by 是由优化器决定的&#xff0c;如果优化器认为filesort速度快&#xff0c;那么走filesort排序&#xff0c;如果优化器认为索引速度快&#xff0c;那么走索引排序。

有一个3x4的矩阵,求矩阵中所有元素中的最大值。要求用函数处理

解此题的算法已在之前的文章中介绍&#xff0c;详见&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/139181787 编写程序&#xff1a; 运行结果&#xff1a;

常用的字符串方法

length() 返回字符串的长度。 let str "HelloWorld"; console.log(str.length); // 10charAt() 返回指定位置的字符。参数&#xff1a;位置索引。 let str "HelloWorld"; console.log(str.charAt(5)); // Wconcat() 连接字符串。参数&#xff1a;一…

昵称生成器

package mainimport ("math/rand" )// 随机昵称 形容词 var nicheng_tou []string{"迷你的", "鲜艳的", "飞快的", "真实的", "清新的", "幸福的", "可耐的", "快乐的", "冷…