python批量对图像中值滤波的代码
时间: 2023-11-06 16:04:40 浏览: 171
以下是使用Python进行图像中值滤波的示例代码:
```python
import cv2
import numpy as np
import glob
# 设置文件夹路径和文件类型
folder_path = 'images/'
file_type = '*.jpg'
# 循环读取文件并进行中值滤波
for file in glob.glob(folder_path + file_type):
img = cv2.imread(file)
median = cv2.medianBlur(img, 5) # 中值滤波,卷积核大小为5x5
cv2.imwrite('median_' + file, median) # 写出中值滤波后的图像
```
这段代码可以批量处理指定文件夹中指定类型的图像并进行中值滤波。卷积核的大小可以根据需要进行调整,这里默认为5x5。
相关问题
python中值滤波批量处理图像并保存到文件夹
你可以使用Python中的OpenCV库来实现图像值滤波和批量处理。下面是一个示例代码,它可以将一个文件夹中的所有图像进行值滤波处理,并保存到另一个文件夹中:
```python
import os
import cv2
def batch_process_images(input_folder, output_folder):
# 检查输出文件夹是否存在,如果不存在则创建
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历输入文件夹中的所有图像文件
for filename in os.listdir(input_folder):
if filename.endswith(".jpg") or filename.endswith(".png"):
# 读取图像
image = cv2.imread(os.path.join(input_folder, filename))
# 进行值滤波处理
filtered_image = cv2.medianBlur(image, 5) # 这里使用了中值滤波
# 保存处理后的图像到输出文件夹
output_path = os.path.join(output_folder, filename)
cv2.imwrite(output_path, filtered_image)
print("图像处理完成!")
# 输入和输出文件夹的路径
input_folder = "input"
output_folder = "output"
# 调用函数进行批量处理
batch_process_images(input_folder, output_folder)
```
在上述代码中,你需要将输入文件夹和输出文件夹的路径设置为你自己的路径。然后,代码将遍历输入文件夹中的所有图像文件(仅支持.jpg和.png格式),对每个图像应用中值滤波,并将处理后的图像保存到输出文件夹中。最后,代码会打印出"图像处理完成!"的消息。
请确保在运行代码之前已经安装了OpenCV库(可以使用`pip install opencv-python`进行安装)并且输入文件夹中包含要处理的图像文件。
准备N张图片文件(图自选),要求对图像进行批量处理,实现细节增强、边缘增强、图像缩放、中值滤波、图像锐化、手绘效果及冷暖色调整等功能,要求设计过程中写出每个功能代码并注释。
好的,我可以给你提供一些Python代码,实现对图像进行批量处理,包括细节增强、边缘增强、图像缩放、中值滤波、图像锐化、手绘效果以及冷暖色调整等功能。
以下是整个批量处理的流程:
1. 读取所有的图片文件;
2. 对于每张图片,依次应用细节增强、边缘增强、图像缩放、中值滤波、图像锐化、手绘效果和冷暖色调等功能,并保存处理后的图片。
注意:为了方便起见,以下代码中的所有图片文件均假设存储在同一个文件夹中。
```python
from PIL import Image, ImageFilter, ImageEnhance, ImageOps
# 全局变量
input_folder = "input_folder_path"
output_folder = "output_folder_path"
def read_images():
"""
读取所有图片文件
"""
images = []
for filename in os.listdir(input_folder):
if filename.endswith(".jpg") or filename.endswith(".png"):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
images.append(img)
return images
def detail_enhance(img):
"""
细节增强
"""
enhancer = ImageEnhance.Detail(img)
img = enhancer.enhance(1.5)
return img
def edge_enhance(img):
"""
边缘增强
"""
img = img.filter(ImageFilter.EDGE_ENHANCE)
return img
def resize(img, size):
"""
图像缩放
"""
img = img.resize(size)
return img
def median_filter(img, size):
"""
中值滤波
"""
img = img.filter(ImageFilter.MedianFilter(size))
return img
def sharpen(img):
"""
图像锐化
"""
img = img.filter(ImageFilter.SHARPEN)
return img
def pencil_sketch(img):
"""
手绘效果
"""
img = img.convert('L')
img = img.filter(ImageFilter.CONTOUR)
img = ImageOps.invert(img)
return img
def adjust_color(img, temperature, tint):
"""
调整冷暖色调
"""
img = img.convert('RGB')
r, g, b = img.split()
r_adjust = ImageOps.colorize(r, (temperature, 0, 0))
b_adjust = ImageOps.colorize(b, (0, 0, tint))
img = Image.merge('RGB', (r_adjust, g, b_adjust))
return img
def main():
# 读取所有图片文件
images = read_images()
for img in images:
# 细节增强
img = detail_enhance(img)
# 边缘增强
img = edge_enhance(img)
# 图像缩放
img = resize(img, (img.width//2, img.height//2))
# 中值滤波
img = median_filter(img, 3)
# 图像锐化
img = sharpen(img)
# 手绘效果
img = pencil_sketch(img)
# 调整冷暖色调
img = adjust_color(img, 7000, -2000)
# 保存处理后的图片
output_path = os.path.join(output_folder, f"{img.filename.split('/')[-1]}_processed.png")
img.save(output_path)
if __name__ == "__main__":
main()
```
以上代码中实现了读取所有图片文件、细节增强、边缘增强、图像缩放、中值滤波、图像锐化、手绘效果、冷暖色调等功能。你可以根据自己的需求,选择需要的功能并进行修改。
阅读全文