python图像操作4:图像擦除

效果如图:

就是在图上加两个小黑块(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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值