十三、图像像素值统计

news2024/11/18 14:46:29

项目功能实现:对一张图像进行统计最大、最小像素值、均差以及方差的值
按照之前的博文结构来,这里就不在赘述了

一、头文件

pixel_statistic.h

#pragma once

#include<opencv2/opencv.hpp>

using namespace cv;

class Pixel_Statistic {
public:
	void pixel_statistic(Mat& image);
};

#pragma once

二、函数实现

pixel_statistic.cpp

double min_value, max_value;
因为像素值是浮点数,故接收的数据类型定义为double

std::vector<Mat>yy;
split(image, yy);
对三颜色通道的图片进行通道分割
具体分割实现思路可参考博文:十一、图像颜色通道分离与合并

minMaxLoc(yy[i], &min_value, &max_value, &min_location, &max_location, Mat());
需要循环遍历每个通道,并统计计算最大、最小像素值的数值和位置
OpenCV颜色通道为BGR,yy[0]是B通道

meanStdDev(image, mean, stddev);
得到的是三颜色通道的均值和方差总和,不是单通道的均值和方差
获取每个颜色通道的均值和方差,对yy进行统计
yy[0]是B通道,BGR以此类推即可

#include"pixel_statistic.h"
#include<iostream>
#include<opencv2/opencv.hpp>

void Pixel_Statistic::pixel_statistic(Mat& image) {
	double min_value, max_value;
	Point min_location, max_location;
	Mat mean, stddev;

	std::vector<Mat>yy;
	split(image, yy);//minMaxLoc统计的是单通道的图片,故需要通过split将三通道进行分离
	for (int i = 0; i < yy.size(); i++) {//每个不同颜色通道依次进行统计
		minMaxLoc(yy[i], &min_value, &max_value, &min_location, &max_location, Mat());
		std::cout << "NO.channels is: " << i << " min_value is: " << min_value <<  " min_location is:" << min_location << " max_value is : " << max_value <<" max_location is : "<<max_location << std::endl;
	}

	meanStdDev(image, mean, stddev);//得到的是三颜色通道的均值和方差总和,不是单通道的均值和方差
	std::cout << "all channel's means is; \n" << mean << std::endl;
	std::cout << "all channel's stddev is; \n" << stddev << std::endl;
	//想要获得单通道的均值和方差,我的想法思路是 通过split进行分离通道,然后挨个进行计算统计即可
}

三、主函数

yy_main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include "pixel_statistic.h"

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
	Mat src = cv::imread("E:/C++_workspace/beyond.jpg", IMREAD_COLOR);

	if (src.empty()) {
		printf("load image is false...\n");
		return -1;
	}

	namedWindow("yanyu", WINDOW_FREERATIO);
	imshow("yanyu", src);

	Pixel_Statistic yy;
	yy.pixel_statistic(src);

	waitKey(0);
	destroyAllWindows();

	return 0;
}

项目结构如下:
在这里插入图片描述
运行结果如下:
在这里插入图片描述

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

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

相关文章

camunda源代码编译运行(三):验证camunda API接口功能

接上一篇文章&#xff1a;camunda源代码编译运行&#xff08;二&#xff09;&#xff1a;构建并运行camunda源代码工程 4.1、发布流程模型 先通过camunda的流程设计器设计一个流程&#xff0c;命名为&#xff1a;UserTask Flow1&#xff0c;然后发布流程&#xff0c;发布流程…

HUD阳光倒灌实验TFT温升实验太阳光模拟器

随着汽车行业的不断发展&#xff0c;车辆的智能化程度越来越高&#xff0c;而HUD抗干扰太阳光模拟器作为一种新型的解决驾驶员视线问题的方案&#xff0c;引起了人们的广泛关注。它能够有效地解决驾驶员在阳光强烈或者夜间光线不足时的视线问题&#xff0c;提高了驾驶的安全性和…

Java写爱心

突然想用Java写一个爱心&#xff0c;程序运行效果如下&#xff1a; 话不多说&#xff0c;上代码 ! public class LovingHeart {/*** 判断坐标是否在爱心范围内*/private static boolean inHeart(float x,float y){float ax*xy*y-1;return a*a*a-x*x*y*y*y<0.0f;}/*** 爱心…

【Vuforia+Unity】AR05-实物3D模型识别功能实现

对于3D物体的识别&#xff0c;可以是虚拟的也可以是实物的&#xff0c;但是对于虚拟的三维模型意义不大&#xff0c;我们完全可以把三维模型放在屏幕上截一张图&#xff0c;以图片识别的方式召唤数字内容&#xff0c;不过在虚拟现实中或许有用。 因此本文探讨的技术路线主要是…

Gitee教程2(完整流程)

1.配置git git config --global user.name "用户名" git config --global user.email "密码" 如何获取&#xff1f; gitee右上角加号点击新建仓库&#xff0c;仓库名随便起一个就行 找到这条命令&#xff0c;把这两句一个一个复制到vscode终端就行 2.创建g…

【2.3深度学习开发任务实例】(1)神经网络模型的特点【大厂AI课学习笔记】

从本章开始&#xff0c;我把标题的顺序变了一下&#xff0c;大厂AI课笔记&#xff0c;放到后面。因为我发现App上&#xff0c;标题无法显示完全。 从本章开始&#xff0c;要学习深度学习开发任务的全部过程了。 我们将通过小汽车识别赛道上的标志牌&#xff0c;给出检测框&am…

2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽

思维导图 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;…

11、内网安全-横向移动NTLM-Relay重放Responder中继攻击LdapEws

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 目录 前提知识&#xff1a; 一、横向移动-NTLM 中继攻击-Relay 重放-SMB 上线 1、CS权限转给MSF: 2、MSF: 3、添加路由&#xff1a; 4、smb_relay重发模块&#xff1a; 5、受控主机输…

良好的 API 安全策略的重要性

根据 Cloudflare 2024 年 API 安全与管理报告&#xff0c;到 2024 年&#xff0c;API 请求占全球动态互联网流量的 57%&#xff0c;这证实 API 是现代软件开发的重要组成部分。但随着多年来它们的采用不断增加&#xff0c;相关的安全挑战也随之增加。 在过去两年中&#xff0c…

备战蓝桥杯---动态规划(应用2(一些十分巧妙的优化dp的手段))

好久不见&#xff0c;甚是想念&#xff0c;最近一直在看过河这道题&#xff08;感觉最近脑子有点宕机QAQ&#xff09;&#xff0c;现在算是有点懂了&#xff0c;打算记录下这道又爱又恨的题。&#xff08;如有错误欢迎大佬帮忙指出&#xff09; 话不多说&#xff0c;直接看题&…

ThreadLocal的一些理解

阅读本篇博客您将了解如下内容&#xff1a; TreadLocal的作用。ThreadLocal的实现原理。ThreadLocal是否会引起内存泄漏&#xff0c;在什么样的条件下引发&#xff0c;如何避免。 1、ThreadLocal的作用 使用线程封闭的指导思想来解决变量共享的并发安全问题&#xff0c;–可以…

跳表是一种什么样的数据结构

跳表是有序集合的底层数据结构&#xff0c;它其实是链表的一种进化体。正常链表是一个接着一个用指针连起来的&#xff0c;但这样查找效率低只有O(n)&#xff0c;为了解决这个问题&#xff0c;提出了跳表&#xff0c;实际上就是增加了高级索引。朴素的跳表指针是单向的并且元素…

FPGA之复选器(2)

8:1 复选器 每个slice具有一个F7AMUX和一个F7BMUX F7AMUX 和 F7BMUX 原语&#xff1a; MUXF7 MUXF7_inst ( .O(O),//Output of MUX to general routing. I0(10), // Input (tie to LUT6 O6 pin) II(II), //Input (tie to LUT6 O6 pin) SS)// Input select to MUX 这两个…

【网站项目】167校园失物招领小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Linux之用户和用户组的深入了解

目录 一、简介 1.1、用户&#xff1a; 1.2、用户组 1.3、UID和GID 1.3、用户账户分类 查看用户类别 超级用户root(0) 程序用户(1~499) 普通用户(500~65535) 二、用户 2.1、添加新的用户账号&#xff1a;useradd 2.2、删除账号&#xff1a;userdel 有-r与没有-r区别…

人为物累,心为形役

一、人是什么 你是你&#xff0c;他是他&#xff0c;我是我&#xff0c;有什么区别吗&#xff0c;直到自我发现我与你不同时&#xff0c;不同是什么&#xff0c;身体结构&#xff1f;人生经历&#xff1f;所拥有的一切&#xff1f;暂时搁置这些的话&#xff0c;抽离我们的意识…

【关于深度学习的一些资料】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 动手学深度学习Awesome Deep LearningTensorFlow Official ModelsPyTorch Image ModelsDeep Reinforcement LearningNeural Style Transfer 动手学深度学习 动手学深度学习 https://zh.d2l.ai/chapter_installation/index.…

4核8G服务器腾讯云和阿里云租用价格对比,2024更新

4核8G云服务器多少钱一年&#xff1f;阿里云ECS服务器u1价格955.58元一年&#xff0c;腾讯云轻量4核8G12M带宽价格是646元15个月&#xff0c;阿腾云atengyun.com整理4核8G云服务器价格表&#xff0c;包括一年费用和1个月收费明细&#xff1a; 云服务器4核8G配置收费价格 阿里…

学习大数据所需的java基础(5)

文章目录 集合框架Collection接口迭代器迭代器基本使用迭代器底层原理并发修改异常 数据结构栈队列数组链表 List接口底层源码分析 LinkList集合LinkedList底层成员解释说明LinkedList中get方法的源码分析LinkedList中add方法的源码分析 增强for增强for的介绍以及基本使用发2.使…

SpringIOC之support模块StaticApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…