Python+OpenCV:简单脚本轻松修复老照片!
要编写一个使用Python和OpenCV来修复老照片的脚本,我们可以利用图像处理技术来增强和修复老照片。以下是一个简单的脚本示例,它使用OpenCV库来调整亮度、对比度,并应用一些滤波来减少噪声。 ```python import cv2 import numpy as np def adjust_brightness_contrast(image, brightness=0, contrast=0): """ 调整图像的亮度和对比度 :param image: 输入图像 :param brightness: 亮度调整值,范围 -100 到 100 :param contrast: 对比度调整值,范围 -100 到 100 :return: 调整后的图像 """ if brightness != 0: if brightness > 0: shadow = brightness highlight = 255 else: shadow = 0 highlight = 255 + brightness alpha_b = (highlight - shadow)/255 gamma_b = shadow image = cv2.addWeighted(image, alpha_b, image, 0, gamma_b) if contrast != 0: f = 131*(contrast + 127)/(127*(131-contrast)) alpha_c = f gamma_c = 127*(1-f) image = cv2.addWeighted(image, alpha_c, image, 0, gamma_c) return image def repair_old_photo(image_path, output_path): """ 修复老照片 :param image_path: 输入图像路径 :param output_path: 输出图像路径 """ # 读取图像 image = cv2.imread(image_path) if image is None: print("无法读取图像") return # 调整亮度和对比度 image = adjust_brightness_contrast(image, brightness=30, contrast=30) # 应用高斯模糊减少噪声 image = cv2.GaussianBlur(image, (5, 5), 0) # 保存修复后的图像 cv2.imwrite(output_path, image) print(f"修复后的图像已保存到 {output_path}") # 使用示例 repair_old_photo('old_photo.jpg', 'repaired_photo.jpg') ``` 代码解释 1. adjust_brightness_contrast: 这个函数用于调整图像的亮度和对比度。通过调整这些参数,可以使老照片看起来更清晰。 2. repair_old_photo: 这个函数读取老照片,应用亮度和对比度调整,然后使用高斯模糊来减少图像中的噪声,最后保存修复后的图像。 额外需要注意的逻辑点 1. 确保输入图像路径正确,避免因路径错误导致程序无法读取图像。 2. 调整亮度和对比度时,参数的选择应根据具体图像进行调整,以达到最佳效果。 3. 高斯模糊的核大小(如(5,5))可以根据图像的分辨率和噪声程度进行调整,以达到最佳的降噪效果。 ######[AI写代码神器 | 645点数解答 | 2025-02-11 16:41:50]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)490
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)443
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)436
- OpenCV.js 轻松实现图片识别:详细步骤全解析 ( | 824点数解答 | 2024-03-22 16:22:16)205
- OpenCV.js 实战:轻松识别图片中电梯轮廓( | 1193点数解答 | 2024-03-22 16:23:32)219
- 用 C++ 和 OpenCV 生成带随机偏移的圆周上的点:代码剖析(字节豆包 | 29点数解答 | 2024-11-06 23:40:42)271
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)416
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)440
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)546
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)414
- 工程师必知!LoadRunner 脚本调试的 10 大基本步骤(百度文心 | 463点数解答 | 2023-11-09 18:25:48)342
- JMeter 工程师必知:HTTP 代理服务器原理及脚本录制全流程揭秘(百度文心 | 371点数解答 | 2023-11-09 18:26:54)280