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

C++使用opencv处理图像阴影部分

1. 直方图均衡化

直方图均衡化是一种增强图像对比度的方法,可以通过均衡化图像的灰度级分布来改善图像中阴影部分的亮度。

#include <opencv2/opencv.hpp>using namespace cv;int main() {// 读取图像Mat image = imread("input_image.jpg", IMREAD_COLOR);if (image.empty()) {std::cerr << "Error loading image!" << std::endl;return -1;}// 将图像转换为灰度图Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);// 应用直方图均衡化Mat equalized;equalizeHist(gray, equalized);// 显示原始图像和均衡化后的图像imshow("Original Image", gray);imshow("Equalized Image", equalized);waitKey(0);return 0;
}

2. 自适应直方图均衡化

自适应直方图均衡化可以更好地处理局部区域的对比度问题,因此特别适合处理阴影部分。

#include <opencv2/opencv.hpp>using namespace cv;int main() {// 读取图像Mat image = imread("input_image.jpg", IMREAD_COLOR);if (image.empty()) {std::cerr << "Error loading image!" << std::endl;return -1;}// 将图像转换为灰度图Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);// 应用自适应直方图均衡化Mat equalized;Ptr<CLAHE> clahe = createCLAHE();clahe->setClipLimit(4);  // 设置限制参数clahe->apply(gray, equalized);// 显示原始图像和均衡化后的图像imshow("Original Image", gray);imshow("CLAHE Image", equalized);waitKey(0);return 0;
}

3. 使用滤波器

有时可以通过使用滤波器来减少阴影的影响,例如使用高斯滤波器平滑图像,或者使用形态学操作来改善图像的局部对比度。

#include <opencv2/opencv.hpp>using namespace cv;int main() {// 读取图像Mat image = imread("input_image.jpg", IMREAD_COLOR);if (image.empty()) {std::cerr << "Error loading image!" << std::endl;return -1;}// 将图像转换为灰度图Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);// 使用高斯滤波器平滑图像Mat blurred;GaussianBlur(gray, blurred, Size(5, 5), 0);// 显示原始图像和平滑后的图像imshow("Original Image", gray);imshow("Blurred Image", blurred);waitKey(0);return 0;
}
http://www.lryc.cn/news/408000.html

相关文章:

  • 4.Java Web开发模式(javaBean+servlet+MVC)
  • centos7 mysql 基本测试(6)主从简单测试
  • 信息安全工程师题
  • springcloud rocketmq 新增的消费者组从哪里开始消费
  • Redis-缓存
  • MySQL练习05
  • [C++][STL源码剖析] 详解AVL树的实现
  • Kubernetes存储 - Node本地存储卷
  • Cocos Creator2D游戏开发-(2)Cocos 常见名词
  • 【不同设备间的数据库连接】被连接设备如何开权限给申请连接的设备
  • Whisper离线部署问题处理
  • 【Hive SQL】数据探查-数据抽样
  • 微信答题小程序产品研发-需求分析与原型设计
  • 基础模板Mybatis-plus+Springboot+Mysql开发配置文件
  • java-poi实现excel自定义注解生成数据并导出
  • LeetCode707 设计链表
  • [Mysql-DDL数据操作语句]
  • google 浏览器插件开发简单学习案例:TodoList;打包成crx离线包
  • 如何学习Doris:糙快猛的大数据之路(从入门到专家)
  • 梯度下降算法,gradient descent algorithm
  • Spring boot 2.0 升级到 3.3.1 的相关问题 (六)
  • C++模版基础知识与STL基本介绍
  • Android 防止重复点击
  • 使用阿里云云主机通过nginx搭建文件服务器
  • 微信Android一面凉经(2024)
  • VMware、Docker - 让虚拟机走主机代理,解决镜像封禁问题
  • 版本管理|为什么不推荐使用Git Rebase
  • Https post 请求时绕过证书验证方案
  • C# 数组常用遍历方式
  • 【JavaScript】详解Day.js:轻量级日期处理库的全面指南