当前位置: 首页> 教育> 锐评 > 濮阳市建站公司_中国域名后缀_外链发布的平台最好是_比较好的网络优化公司

濮阳市建站公司_中国域名后缀_外链发布的平台最好是_比较好的网络优化公司

时间:2025/7/11 15:20:01来源:https://blog.csdn.net/HanWenKing/article/details/141172351 浏览次数:0次
濮阳市建站公司_中国域名后缀_外链发布的平台最好是_比较好的网络优化公司

文章目录

  • 一,简介
  • 二,图像亮度对比度修改
  • 三,对比度增强:

一,简介

在图像处理领域,对比度、亮度和饱和度是影响图像视觉效果的重要因素。合理调整这三个参数,可以使图像更具表现力,满足不同场景的需求。本文将带领大家使用OpenCV,这一强大的开源计算机视觉库,轻松实现图像对比度、亮度和饱和度的修改。本文将从基础知识入手,详细介绍如何使用OpenCV对图像进行操作,包括对比度、亮度和饱和度的调整。

二,图像亮度对比度修改

图像的亮度和对比度是图像质量感知的两个基本属性,它们共同决定了图像的视觉效果。
亮度指的是图像中像素的明暗程度。在数字图像中,亮度通常由像素值直接表示。亮度的调整会改变图像的整体明暗水平,但不影响图像中不同颜色或灰度之间的相对关系。提高亮度会使图像看起来更明亮,降低亮度则使图像变暗。在某些情况下,调整亮度可以改善图像在特定光照条件下的可视性。
对比度指的是图像中最亮和最暗部分的差异程度。高对比度图像具有清晰、分明的明暗区分,而低对比度图像则明暗区分不够明显,看起来更为模糊和平淡。对比度的调整会影响图像中细节的可见性,使得图像中的边缘和纹理更加突出或更加柔和。
在opencv中有一个方法可以实现调整图像的亮度和对比度操作cv2.convertScaleAbs()
函数说明:

cv2.convertScaleAbs() 是 OpenCV 库中的一个函数,它用于将输入数组元素的值按比例缩放,并加上一个可选的常数,然后将其转换为绝对值并返回结果。这个函数常用于图像处理,特别是在需要调整图像的亮度和对比度时。
参数:
● src: 输入数组,通常是图像,数据类型为 CV_8U 或 CV_16U 或 CV_32F。
● alpha: 可选的比例因子,用于缩放输入数组元素的值。如果该值为正,则图像的对比度会增加;如果该值小于1,则图像的对比度会降低。默认值为1,表示不改变对比度。
● beta: 可选的常数,用于在每个元素上加上这个值。正值会使图像变亮,负值会使图像变暗。默认值为0,表示不改变亮度。
● dst: 输出数组,其大小和类型与 src 相同。
● dtype: 当这个参数被指定时,输出数组将由这个类型决定;否则,输出数组将与输入数组具有相同的数据类型。

使用代码:

import cv2# 加载图像
image = cv2.imread(r'E:\R-C.jfif')  # 替换为你的图像路径
image = cv2.resize(image,(0,0),fx=0.5,fy=0.5)
# 检查图像是否成功加载
if image is None:raise ValueError("Could not read the image.")# 定义缩放因子和偏移量
alpha1 = 1.2  # 缩放因子,可以大于1或小于1
beta1 = 0     # 偏移量,增加或减少亮度
alpha2 = 1.0  # 缩放因子,可以大于1或小于1
beta2 = 50     # 偏移量,增加或减少亮度
# 应用cv2.convertScaleAbs()进行缩放和偏移
# 如果图像是彩色的,它会保持原有的色彩通道
scaled_image = cv2.convertScaleAbs(image, alpha=alpha1, beta=beta1)
scaled_image2 = cv2.convertScaleAbs(image, alpha=alpha2, beta=beta2)
# 显示原始图像和调整后的图像
cv2.imshow('image', image)
cv2.imshow('scaled_image1', scaled_image)
cv2.imshow('scaled_image2', scaled_image2)
# 等待按键后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
增强光照:
在这里插入图片描述
原图:
在这里插入图片描述

三,对比度增强:

在这里插入图片描述
三,图像饱和度修改
图像饱和度是指图像中颜色的纯度或强度。它是颜色三属性之一,与色相(Hue)和亮度(Lightness)或明度(Value)一起,构成了描述颜色的三个基本维度,饱和度是影响图像视觉冲击力和美观度的重要因素之一,通过调整饱和度,可以显著改变图像的情感和风格。
实现代码:

import cv2
import sys
import numpy as np
import matplotlib.pyplot as pltdef Saturation(rgb_img, increment):# 将输入图像转换为浮点数,并归一化到0-1范围img = rgb_img.astype(np.float64) / 255.0# 计算每个像素的最小值,即HSL颜色空间中的亮度最低的部分img_min = img.min(axis=2)# 计算每个像素的最大值,即HSL颜色空间中的亮度最高的部分img_max = img.max(axis=2)# 计算饱和度(delta)和亮度(value)的中间值delta = (img_max - img_min)value = (img_max + img_min)# 计算HSL颜色空间中的亮度LL = value / 2.0# 根据亮度L计算饱和度s的两个可能值s1 = delta / (value + 1e-8)  # 防止除以0的情况,添加一个很小的数s2 = delta / (2 - value + 1e-8)# 根据亮度L选择饱和度s的正确值s = np.where(L < 0.5, s1, s2)# 计算增量调整后的饱和度,如果饱和度加上增量大于1,则保持原饱和度,否则用1减去增量temp = increment + salpha = np.where(temp > 1, s, 1 - increment)# 计算调整后的alpha值alpha = 1 / alpha - 1# 对RGB图像的每个通道进行调整,以改变饱和度for i in range(3):img[:, :, i] += (img[:, :, i] - L) * alpha# 确保调整后的RGB值在0到1之间,如果超出这个范围,则将其限制在这个范围内img = np.clip(img, 0, 1)# 返回调整后的图像return imgpath = r'E:\R-C.jfif'
increment = 0.5  # 范围-1到1#  run : python Saturation.py (path) (increment)
if __name__ == "__main__":img = cv2.imread(path)img = cv2.resize(img,(640,640))img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img_new = Saturation(img_rgb, increment)img_new = cv2.cvtColor((img_new*255).astype(np.uint8), cv2.COLOR_RGB2BGR)cv2.imshow("img", img)cv2.imshow("img_new",img_new)cv2.waitKey(0)

效果:
左侧原图,右侧饱和度增强后的图片
在这里插入图片描述

关键字:濮阳市建站公司_中国域名后缀_外链发布的平台最好是_比较好的网络优化公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: