用python实现 将图像从底端有像素点的地方开始向上方计数 截取从底端到上方18像素点和到13像素点之间的图片 输入图片方式可以批量输入和批量保存
时间: 2024-05-11 19:17:46 浏览: 1
以下是Python代码示例,实现了上述功能:
```python
import os
from PIL import Image
# 批量处理图片
def batch_process_images(input_dir, output_dir):
# 遍历输入目录中的所有图片文件
for filename in os.listdir(input_dir):
if filename.endswith('.jpg'): # 只处理jpg格式的图片
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
# 打开图片文件
image = Image.open(input_path).convert('L') # 转换为灰度图像
# 获取图片宽度和高度
width, height = image.size
# 从底部向上搜索像素点
bottom = height - 1
while bottom >= 0 and image.getpixel((0, bottom)) == 255:
bottom -= 1
# 如果没有找到有像素点的行,则跳过该图片
if bottom < 0:
continue
# 计算截取的区域
top = max(0, bottom - 18) # 从底部向上截取18个像素点
bottom = min(bottom, top + 5) # 截取到13个像素点之前
box = (0, top, width, bottom)
# 截取图片
cropped_image = image.crop(box)
# 保存截取后的图片
cropped_image.save(output_path)
# 测试批量处理图片
input_dir = 'input'
output_dir = 'output'
batch_process_images(input_dir, output_dir)
print('Done.')
```
在上述代码中,`batch_process_images`函数用于批量处理图片,其中`input_dir`和`output_dir`分别表示输入目录和输出目录。该函数首先遍历输入目录中的所有jpg格式的图片文件,并逐一进行处理。对于每张图片,它会首先将其转换为灰度图像,然后从底部向上搜索像素点,找到第一个有像素点的行。如果没有找到有像素点的行,则跳过该图片。接下来,它会计算截取的区域,并将该区域的图片截取下来,保存到输出目录中。在本例中,截取的区域是从底部向上截取18个像素点,直到13个像素点之前。最后,该函数会输出一个提示信息,表示处理完成。
为了使用上述代码,你需要将要处理的图片存放在`input`目录下,并确保该目录中只包含jpg格式的图片文件。执行上述代码后,它会将处理后的图片保存在`output`目录下。你可以根据需要修改`batch_process_images`函数中的截取区域和其他参数,以适应不同的需求。