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

c++视觉处理---直方图均衡化

直方图均衡化

直方图均衡化是一种用于增强图像对比度的图像处理技术。它通过重新分布图像的像素值,以使图像的直方图变得更均匀,从而提高图像的视觉质量。在OpenCV中,您可以使用 cv::equalizeHist 函数来执行直方图均衡化。以下是 cv::equalizeHist 函数的基本用法:

cv::equalizeHist(src, dst);
  • src: 输入的灰度图像。
  • dst: 输出图像,用于存储均衡化后的结果。

cv::equalizeHist 函数将对输入图像进行直方图均衡化,然后将结果保存在 dst 中。这将使图像的对比度增加,细节更加清晰。

以下是一个示例,演示如何使用 cv::equalizeHist 函数进行直方图均衡化:

#include <opencv2/opencv.hpp>int main() {cv::Mat image = cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 灰度图像if (image.empty()) {std::cerr << "无法加载图像" << std::endl;return -1;}cv::Mat equalizedImage;// 执行直方图均衡化cv::equalizeHist(image, equalizedImage);cv::imshow("原始图像", image);cv::imshow("均衡化后的图像", equalizedImage);cv::waitKey(0);return 0;
}

在这个示例中,我们加载了一张灰度图像,然后使用 cv::equalizeHist 函数对图像进行直方图均衡化,最后显示原始图像和均衡化后的图像。直方图均衡化通常用于提高低对比度图像的视觉质量。
在这里插入图片描述

相机实时直方图均衡化

#include <opencv2/opencv.hpp>int main() {cv::VideoCapture cap(0); // 打开本地相机(通常是0号摄像头)if (!cap.isOpened()) {std::cerr << "无法打开相机" << std::endl;return -1;}while (true) {cv::Mat frame;cap >> frame; // 从相机捕获一帧图像if (frame.empty()) {std::cerr << "无法捕获图像" << std::endl;break;}cv::Mat grayFrame;cv::cvtColor(frame, grayFrame, cv::COLOR_BGR2GRAY); // 转换为灰度图像// 应用直方图均衡化cv::Mat equalizedFrame;cv::equalizeHist(grayFrame, equalizedFrame);cv::imshow("原始图像", grayFrame);cv::imshow("均衡化后的图像", equalizedFrame);// 检查用户是否按下ESC键,然后退出循环if (cv::waitKey(1) == 27) {break;}}return 0;
}
http://www.lryc.cn/news/191475.html

相关文章:

  • 【LeetCode】2.两数相加
  • 蜘蛛飞机大战
  • 代码混淆界面介绍
  • 蓝桥杯每日一题2023.10.9
  • HTML5的新增表单元素
  • 如何在Firefox中配置HTTP?
  • Android组件通信——消息机制(二十六)
  • 《进化优化》第4章 遗传算法的数学模型
  • spring:详解spring MVC
  • 【Leetcode】207.课程表
  • Ubuntu18.04中QT安装下载安装pcl和vtk以及使用过程中踩过的坑
  • C++学习——对象数组、成员对象与封闭类
  • 解锁机器学习-梯度下降:从技术到实战的全面指南
  • day62:ARMday9,I2c总线通信
  • 【Python学习笔记】类型/运算/变量/注释
  • 国内常用源开发环境换源(flutter换源,python换源,Linux换源,npm换源)
  • 关于一篇什么是JWT的原理与实际应用
  • 【Method】把 arXiv论文 转换为 HTML5 网页
  • 每日一题AC
  • 后端:推荐 2 个 .NET 操作的 Redis 客户端类库
  • 华泰证券:京东营收增长或短期承压
  • Java从resources文件下载文档,文档没有后缀名
  • 【动手学深度学习-Pytorch版】BERT预测系列——BERTModel
  • Python之元组、字典和集合练习
  • 【数据结构】归并排序和计数排序(排序的总结)
  • 某医疗机构:建立S-SDLC安全开发流程,保障医疗前沿科技应用高质量发展
  • 验证二叉搜索树的后序遍历序列
  • 第三章 内存管理 一、内存的基础知识
  • 【Java学习之道】Java常用集合框架
  • logicFlow 流程图编辑工具使用及开源地址