# image_adjust **Repository Path**: lixin--yii/image_adjust ## Basic Information - **Project Name**: image_adjust - **Description**: 使用Python和Tkinter创建一个简单的图形用户界面,可以调整图像的亮度和对比度,并显示调整后的直方图。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 273 - **Created**: 2025-04-27 - **Last Updated**: 2025-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图像亮度和对比度调整APP 使用Python和Tkinter创建一个简单的图形用户界面,可以调整图像的亮度和对比度,并始终显示并更新直方图。 ## 项目描述 本项目使用Python的图形用户界面库Tkinter,图像处理库Pillow和OpenCV,以及Matplotlib绘图库,实现了一个简单的图像编辑器。用户可以通过此编辑器打开本地图片文件,通过滑动条调整图片的亮度和对比度,并查看调整后的直方图。具体功能如下: - 载入本地图片 - 调整图片亮度 - 调整图片对比度 - 显示调整后的直方图 ## 项目运行效果截图 ![项目运行效果截图](![输入图片说明](819bbff32c14b72ce3736912012f177.png)) ## 功能 ### 载入本地图片 点击界面上的 "Load Image" 按钮,会弹出文件选择对话框,支持选择扩展名为`.jpg`、`.jpeg`、`.png`的图片文件。选择后,程序会将图片载入编辑器,若图片尺寸过大(宽或高大于400像素),会自动对其进行缩放处理,保持图片的长宽比,以便在界面中更好地展示 。 ### 调整图片亮度 通过拖动界面中的 "亮度" 滑块,可以实时调整图片的亮度。滑块取值范围为0.1到3.0,步长为0.1。当滑块值小于1.0时,图片会变暗;当滑块值大于1.0时,图片会变亮;滑块值为1.0时,图片保持原始亮度。调整亮度的原理是将图片的每个像素值乘以滑块对应的亮度因子,然后通过`numpy.clip`函数将像素值限制在0到255的合理范围内,避免出现异常显示。 ### 调整图片对比度 拖动 "CLAHE clipLimit" 滑块,可以实时调整图片的对比度。滑块取值范围为1.0到10.0,步长为1.0。该功能基于OpenCV中的CLAHE(对比度受限的自适应直方图均衡化)算法实现,通过设置不同的`clipLimit`值(即滑块取值),对图片的灰度图进行处理,增强图像的局部对比度。`clipLimit`值越大,对比度增强的效果越明显。 ### 显示调整后的直方图 在调整图片亮度和对比度的过程中,程序会实时更新并显示图片的直方图。直方图的横轴表示像素值范围(0到255),纵轴表示对应像素值的数量。通过观察直方图,可以直观地了解图片像素的分布情况,判断图像的明暗程度和对比度状态 。 ## 依赖 - Python 3.6+ - Pillow:用于打开、处理和显示图像。 - OpenCV:提供计算机视觉相关功能,实现对比度调整算法。 - Tkinter:Python的标准GUI库,用于创建图形用户界面。 - Matplotlib:用于绘制和显示图片的直方图。 ## 使用 1. 运行项目: ``` python adjust_image_app.py ``` 2. 点击 "Load Image" 按钮,选择本地图片文件进行载入。 3. 通过拖动 "亮度" 和 "CLAHE clipLimit" 滑块,调整图片的亮度和对比度,观察图片和直方图的实时变化。 ## 注意 - 由于GUI库Tkinter的限制,此项目仅支持在Python解释器下运行,不支持Jupyter Notebook或者其他交互式环境。 - 确保选择的图片文件格式为支持的`.jpg`、`.jpeg`、`.png`,否则可能无法正常载入。 - 在调整亮度和对比度时,避免将参数设置得过大或过小,以免导致图片出现过亮、过暗或对比度异常的情况。 ## 个人信息 - 学号: 202352320225 - 年级: 2023 - 专业: 智能科学与技术 - 班级: 2班