效果如图:
就是在图上加两个小黑块(1-2个)数量也可以自定义吧,然后也不一定是小黑块,颜色也可以自定义,具体看代码第6行
好像是没啥用哈,我是做目标检测数据增强用的
import numpy as np
from PIL import Image, ImageDraw
import random
def erase_random_areas(image, num_areas=1, min_size=90, max_size=150, background_color=(0, 0, 0)):
"""
擦除图像中的随机区域
:param image: 原始图像
:param num_areas: 擦除区域的数量
:param min_size: 擦除区域的最小尺寸
:param max_size: 擦除区域的最大尺寸
:param background_color: 背景颜色(擦除区域的填充颜色)
:return: 擦除后的图像
"""
image_copy = image.copy()
draw = ImageDraw.Draw(image_copy)
width, height = image_copy.size
for _ in range(num_areas):
# 随机确定擦除区域的位置和大小
area_width = random.randint(min_size, max_size)
area_height = area_width
x1 = random.randint(0, width - area_width)
y1 = random.randint(0, height - area_height)
x2 = x1 + area_width
y2 = y1 + area_height
# 画出擦除区域
draw.rectangle([x1, y1, x2, y2], fill=background_color)
return image_copy
if __name__ == "__main__":
# 打开图片
image = Image.open(r"E:\desktop\output\1.png")
# 擦除图像中的1到2个随机区域
image = erase_random_areas(image, num_areas=random.randint(1, 2))
# 保存或显示处理后的图片
image.save(r"E:\desktop\output\erased.png")
image.show()
import numpy as np
from PIL import Image, ImageDraw
import random
def erase_random_areas(image, num_areas=1, min_size=90, max_size=150, background_color=(0, 0, 0)):
"""
擦除图像中的随机区域
:param image: 原始图像
:param num_areas: 擦除区域的数量
:param min_size: 擦除区域的最小尺寸
:param max_size: 擦除区域的最大尺寸
:param background_color: 背景颜色(擦除区域的填充颜色)
:return: 擦除后的图像
"""
image_copy = image.copy()
draw = ImageDraw.Draw(image_copy)
width, height = image_copy.size
for _ in range(num_areas):
# 随机确定擦除区域的位置和大小
area_width = random.randint(min_size, max_size)
area_height = area_width
x1 = random.randint(0, width - area_width)
y1 = random.randint(0, height - area_height)
x2 = x1 + area_width
y2 = y1 + area_height
# 画出擦除区域
draw.rectangle([x1, y1, x2, y2], fill=background_color)
return image_copy
if __name__ == "__main__":
# 打开图片
image = Image.open(r"E:\desktop\output\1.png")
# 擦除图像中的1到2个随机区域
image = erase_random_areas(image, num_areas=random.randint(1, 2))
# 保存或显示处理后的图片
image.save(r"E:\desktop\output\erased.png")
image.show()
相信我直接从37行开始看就完了!!!
(还想实现什么图像处理相关的操作,直接私聊我就完了!!!!!!!!)
not need money