二十六、直方图均衡化

news2024/9/21 19:38:35

项目功能实现:对灰度图片进行直方图均衡化操作
按照之前的博文结构来,这里就不在赘述了

一、头文件

histogram_equal.h

#pragma once

#include<opencv2/opencv.hpp>

using namespace cv;

class HISTOGRAM_EQUAL {
public:
	void histogram_equal(Mat& image);
};

#pragma once

二、函数实现

histogram_equal.cpp

cvtColor(image, gray, COLOR_BGR2GRAY);
转灰度图

equalizeHist(gray, result);
对灰度图进行直方图均衡化

直方图均衡化函数equalizeHist只支持对灰度图像的直方图均衡化

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

void HISTOGRAM_EQUAL::histogram_equal(Mat& image) {
	Mat gray, result;
	cvtColor(image, gray, COLOR_BGR2GRAY);
	imshow("gray", gray);
	equalizeHist(gray, result);
	imshow("histogram_equal", result);
}

三、主函数

yy_main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include"histogram_equal.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);

	HISTOGRAM_EQUAL yy;
	yy.histogram_equal(src);

	waitKey(0);
	destroyAllWindows();

	return 0;
}

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

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

四、课后作业

项目功能实现:对彩色图片进行直方图均衡化操作

思路:直方图均衡化本质是调整亮度,在HSV色域中对应的V通道
①把图像转到HSV空间中
②对图片的HSV进行分解通道,对V通道进行直方图均衡化
③合并HSV空间的图片
④转换到RGB色彩空间

histogram_equal.cpp

①把图像转到HSV空间中
cvtColor(image, hsv, COLOR_BGR2HSV);

②对图片的HSV进行分解通道,对V通道进行直方图均衡化
split(hsv, hsv_channels);
equalizeHist(result_hsv, hsv_channels[2]);
分离之后的通道,HSV中V为hsv_channels[2]

③合并HSV空间的图片
merge(hsv_channels,result_hsv);

④转换到RGB色彩空间
cvtColor(result_hsv, result_bgr, COLOR_HSV2BGR);

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

void HISTOGRAM_EQUAL::histogram_equal(Mat& image) {
	Mat hsv, result_hsv, result_bgr;
	std::vector<Mat>hsv_channels;
	cvtColor(image, hsv, COLOR_BGR2HSV);
	split(hsv, hsv_channels);
	equalizeHist(result_hsv, hsv_channels[2]);
	merge(hsv_channels,result_hsv);
	cvtColor(result_hsv, result_bgr, COLOR_HSV2BGR);
	imshow("hsv", result_hsv);
	imshow("rgb", result_bgr);
}

效果图如下:
在这里插入图片描述

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

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

相关文章

公众号怎么线上公证?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移的作用可不止变更主体这一个哦&#xff01;还可以把 A 账号的粉丝、文章素材、违规记录等迁移到 B 账号上。这样一来&#xff0c;你就可以在不失去原有粉丝的情况下&#xff0c;更好地管理和运营公众号啦…

【MySQL】连接查询和自连接的学习和总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-x4sPmqTXA4yupW1n {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

idea 2022.3 配置svn插件

配置中遇到的问题 1.没有安装svn.exe这个 原本是安装了TortoiseSVN 但没有安装客户端命令需要补充这个客户端命令的安装 才能引用 2.路径引用的问题 原本是在 D:\Program Files\TortoiseSVN 这里存在空格 会产生问题 网上说的使用progra~1 或者 加双引号 均不能成功 最…

SolidWorks的使用笔记

K因子 成型工具 自己设计的成型工具零件&#xff0c;保存文件类型为&#xff1a;

Servlet实现图片的上传和显示

本篇文章是在上一篇文章上改进而来 一、图片上传需要引用的jar包 链接&#xff1a;https://pan.baidu.com/s/17FLjlWlNEG5YnS_dl3C8WA 提取码&#xff1a;wbis 二、最后的结果 三、更改数据库增加图片路径字段path 四、前端页面增加图片上传按钮,和上传的复选框 代码 上传…

[c++] 工厂模式 + cyberrt 组件加载器分析

使用对象的时候&#xff0c;可以直接 new 一个&#xff0c;为什么还需要工厂模式 &#xff1f; 工厂模式属于创建型设计模式&#xff0c;将对象的创建和使用进行解耦&#xff0c;对用户隐藏了创建逻辑。 个人感觉上边的表述并没有说清楚为什么需要使用工厂模式。因为使用 new 创…

达尔克仪器设备邀您观摩2024生物发酵产品与技术装备展

参展企业介绍 达尔克本着“诚信、求精、协作、创新”的企业精神&#xff0c;以专业的技术、优良的品质和完善的服务&#xff0c;与广大客户共创辉煌未来。 我们的产品——包括水质分析、压力、温度、流量、物位等工业在线过程控制仪表、其他类型传感器以及自动化控制方案——全…

HTTPS原理及配置

HTTPS 1. 对称加密和非对称加密2. 加密算法&#xff08;了解&#xff09;3. HTTPS 协议介绍4. HTTPS 原理4.1. HTTP 访问过程4.2. HTTPS访问过程4.3. HTTPS 总结4.4. CA 证书认证机构 HTTPS 基本原理 HTTPS&#xff08;全称&#xff1a;HyperText Transfer Protocol over Secur…

模型 HBG(品牌增长)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。品牌增长法。 1 HBG(品牌增长)模型的应用 1.1 江小白使用HBG模型提高品牌知名度和销售额 选择受众市场&#xff1a;江小白的目标客户是年轻人&#xff0c;他们喜欢简单、时尚的产品。因此&#xff0c;江…

【最新Dubbo3深入理解】Dubbo3源码中的一些小技巧

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

如何用 Screen Studio 灵活高效录制可复用的教学视频?

如果你跟我一样&#xff0c;录制视频是高频刚需&#xff0c;那你不难体会到它对用户痛点的理解和解决。 挑战 作为一名教师兼 UP 主&#xff0c;我经常录制视频。 之前录制教程类视频&#xff0c;我往往采用自己的标准「懒人法」—— 从头到尾&#xff0c;用 OBS 录制屏幕和摄像…

R语言空间分析、模拟预测与可视化

随着地理信息系统&#xff08;GIS&#xff09;和大尺度研究的发展&#xff0c;空间数据的管理、统计与制图变得越来越重要。R语言在数据分析、挖掘和可视化中发挥着重要的作用&#xff0c;其中在空间分析方面扮演着重要角色&#xff0c;与空间相关的包的数量也达到130多个。在本…

Facebook群控:利用代理IP克服多账号关联

拥有多个 Facebook 帐户对于区分您的个人和企业在线形象或维护客户页面非常有用。然而&#xff0c;Facebook 的服务条款正式限制用户只能使用一个个人帐户&#xff0c;想要多账号运营&#xff0c;下面的干货必须看&#xff01; 一、Facebook群控是什么&#xff1f; Facebook群…

【安装记录】解决ssh密码正确,却无法连接到虚拟机

可能是没有允许Root登录 解决办法&#xff1a;修改/etc/ssh/sshd_config文件&#xff0c;将 PermitRootLogin 项打开

nginx 模块 常见内置变量 location

一、nginx 模块 ngx_http_core_module 核心模块 ngx_http_access_module 访问控制模块 deny allow ngx_http_auth_basic_module 身份验证 小红小名&#xff08;虚拟用户&#xff09; ftp也有虚拟用户 ngx_http_gzip_module 压缩模块 ngx_http_gzip_static_modul…

Day16_集合与泛型(泛型类与泛型接口,泛型方法,类型变量的上限与泛型的擦除,类型通配符)

文章目录 Day16 泛型学习目标1 泛型的概念1.1 没有泛型的问题1.2 泛型的引入1.2 泛型的好处1.3 泛型的定义 2 泛型类与泛型接口2.1 使用核心类库中的泛型类/接口案例一&#xff1a;Collection集合相关类型案例二&#xff1a;Comparable接口 2.2 自定义泛型类与泛型接口语法格式…

C语言中的字体背景颜色汇总

客官请看效果 客官请看代码 #include <stdio.h> #include <stdlib.h> #include <windows.h>int main() {int i;for (i 0; i < 254; i) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i); // 设置当前文本颜色为循环变量对应的颜色printf(…

Maven - 代码混淆proguard-maven-plugin vs 代码加密classfinal

文章目录 proguard-maven-plugin 代码混淆官网地址入门小结 ClassFinal 代码加密介绍Gitee项目模块说明功能特性环境依赖使用说明下载加密maven插件方式无密码模式机器绑定启动加密后的jartomcat下运行加密后的war 版本说明协议声明 classfinal实战工程pom编译打包配置文件运行…

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热&#xff0c;这是一个调试使用并且可以响应快速迭代的Gui库&#xff0c;甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站&#xff1a;https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

LangChain Agent v0.2.0简明教程 (上)

快速入门指南 – LangChain中文网 langchain源码剖析系列课程 九天玩转Langchain! 1. LangChain是什么2. LangChain Expression Language (LCEL)Runnable 接口3. Model I/O3.1 Prompt Templates3.2 Language Model3.3 Output ParsersUse case(Q&A with RAG)1. LangChain…