python-3.x - 在 Python 中使用 PIL 进行亮度均衡
问题描述
我试图均衡亮度的文件夹中有多个灰度图像。增强必须应用于所有图像,除了第一个将是我们的参考图像。此外,这种变化只发生在图像的亮度上,而不是对比度,因为我想保留所有其他细节。这意味着直方图只有一个简单的移动,没有扩大。我试图使用 PIL 模块来计算平均亮度。这种方法可能更快,因为我可以在没有 numpy 数组转换的情况下做到这一点。
编码:
with open("Img_Locations.txt") as file: # Assume the file locations in a text file
img_files = file.read().splitlines()
file.close()
self.images = [[] for x in range(len(img_files))]
for i in range(len(img_files)):
images[i] = Image.open(img_files[i])
im = images[i].convert('L')
stat = ImageStat.Stat(im)
ref_pil_original = int(stat.mean[0])
enhancer = ImageEnhance.Brightness(im)
enhanced_im = enhancer.enhance(1.5)
stat2 = ImageStat.Stat(enhanced_im)
ref_pil_bright = int(stat2.mean[0])
print(ref_pil_original, ref_pil_bright)
这里的示例输出是:
114 170
129 192
122 183
所以问题是为什么亮度增强在应用于相同的 1.5 倍时会为每个图像产生不同的差异(基本上该因素如何影响我的图像的像素)?如果是这种情况,我可以通过恒定因子调整图像亮度以确保最终平均值具有相同平均值的最快方法是什么?
python -- 测量像素亮度这里 PIL 图像是按像素读取的。那么这是否意味着我必须逐像素扫描图像才能完成我的要求?我想知道这是否确实是这样做的方法,因为已经有现有的功能。不幸的是,我只知道 PIL 和 OpenCV 用于图像分析,因此我读取图像的格式仅限于它们。
解决方案
推荐阅读
- c# - Specflow - 场景大纲测试被忽略
- python - 使用来自另一列的滚动值的数据框百分位数
- javascript - 接受来自 javascript 的 Jquery.post 和 Python 的 request.post 的 json
- javascript - React JSX 错误期望在箭头函数的末尾有一个返回值
- javascript - 在 Cytoscape.js 中设置节点位置
- logging - Jboss EAP 6.3.3 (AS 7.4.3 final redhat 2) 如何在standalone-full.xml 中设置基于定期大小的日志记录
- c++ - 我对内存泄漏有什么不明白的地方?
- c - C语言,我的函数没有返回值,无法修复
- csv - azure ADF - 从查找活动中获取 .csv 文件的字段列表
- java - CardView 显示白色居中布局