【python图片填充】

图片填充

背景

例子:
原始图片:[190,289]
目标图片:[224,289]
需要从原始图像中裁剪出(224,224)大小的图片,原始图片大小不够,所以要填充图片至[224,289]

通用情况:
需求:从原始图片中填充像素使图片大小变为指定大小,且不改变原始图片
原始图片:[iw, ih]
目标图片:[dw, dh]
裁剪尺寸:[patchsize, patchsize]
若iw < patchsize:
则[dw=patchsize, dh=ih]
若ih < patchsize:
则[dw=iw, dh=patchsize]

代码

def scale(root, txtpath, patch_size):
'''
txtpath:filename, mos
'''
    fh = open(txtpath, 'r')
    pic_names = []
    for line in fh:
        line = line.split('\n')  # ['00_00_00.png,9.516666666666667', '']
        words = line[0].split(',')  # ['00_00_00.png', '9.516666666666667']
        picname = words[0]
        pic_names.append(picname)

    for name in pic_names:
        picpath = os.path.join(root, 'projection_img', 'projection_1', name)  #存放原始图片的路径
        img = Image.open(picpath)
        iw, ih = img.size  # 原始图像的尺寸
        if iw < 224 | ih < 224:
            scale = max(patch_size / iw, patch_size / ih)  # 转换的最大比例
            nw = int(iw * scale + 0.5)
            nh = ih
        else:
            nw = iw
            nh = ih
        new_image = Image.new('RGB', (nw, nh), (0, 255, 0))  # 生成绿色图像
        # # // 为整数除法,计算图像的位置
        new_image.paste(img, (0, 0))  # 将图像填充在背景图的(00)处,其余部分为绿色
        new_image.save(name)
        # print(new_image.size)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一种面向对象、解释型的高级编程语言,能够应用于多种领域,包括机器学习、人工智能、Web开发等。Python具有丰富的绘图功能,可以用来进行数据可视化、绘制复杂的图形等。其中,区域填充颜色是绘图中常用的一种功能。 在Python中,可以使用许多第三方库来进行绘图操作,比如Matplotlib、Seaborn等。Matplotlib是一个流行的数据可视化库,其提供了广泛的绘图功能,包括区域填充颜色。 对于Matplotlib库中的区域填充颜色,可以使用`fill_between()`函数来实现。该函数可以在两个输入序列之间填充颜色,同时可以通过指定颜色值等参数来控制填充效果。例如: ```python import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) plt.plot(x, y1, color='blue') plt.plot(x, y2, color='red') plt.fill_between(x, y1, y2, where=(y1 > y2), interpolate=True, color='green', alpha=0.5) plt.show() ``` 上述代码中,`fill_between()`函数使用了诸多参数控制填充效果,其中`where`参数指定了填充条件,即`y1 > y2`的区间。`interpolate`参数用于控制是否进行插值,`color`参数用于指定填充颜色,`alpha`参数用于控制填充透明度。 除了`fill_between()`函数外,Matplotlib库还提供了其他的区域填充函数,例如`fill()`函数和`contourf()`函数等,使用方法类似。通过这些函数的组合和灵活使用,可以实现丰富多彩的区域填充效果,为各种数据可视化和绘图需求提供了强大的支持。 ### 回答2: Python是一门强大且易于使用的编程语言,可以进行许多不同的图形操作,包括区域填充颜色。在Python中,我们可以使用多种图形库来实现网页上的区域填充颜色效果。其中最常用的是Python Imaging Library(PIL)。 PIL是一个Python图像处理库,可用于创建和编辑位图图像文件。它包括许多有用的图像功能,如图像旋转、大小调整、颜色增强和区域填充颜色等。我们可以使用PIL来创建、读取和修改图像文件。以下是使用PIL进行区域填充的示例代码: 首先,我们需要导入PIL库: ``` from PIL import Image, ImageDraw ``` 然后,我们创建一个图像对象,并通过ImageDraw对象来填充颜色: ``` img = Image.new('RGBA', (200, 200), 'white') draw = ImageDraw.Draw(img) draw.rectangle((50, 50, 150, 150), fill='blue') ``` 这将创建一个大小为200x200像素的白色图像,并在宽度为100像素,高度为100像素的矩形内填充了蓝色颜色。 我们还可以创建具有透明度的图像,通过设置alpha通道来实现: ``` img = Image.new('RGBA', (200, 200), (255, 255, 255, 0)) draw = ImageDraw.Draw(img) draw.rectangle((50, 50, 150, 150), fill=(0, 255, 0, 128)) ``` 这将创建一个完全透明的图像,并在宽度为100像素,高度为100像素的矩形内填充了50%的绿色颜色。 以上就是实现Python区域填充颜色的基本方法。总之,使用Python进行区域填充颜色非常方便。它可以应用于多种图像应用程序,并且开发人员可以根据需要进行自定义和修改。 ### 回答3: Python区域填充颜色可以用Python的matplotlib库来实现。matplotlib是一个数据可视化库,可以用来创建各种类型的图形,包括柱状图、折线图、散点图、饼图等。 在matplotlib中,我们可以通过调用fill和plot函数来实现区域填充颜色。其中,fill函数用于填充闭合区域,而plot函数用于绘制线条。 下面是一个简单的示例,展示如何在matplotlib中实现区域填充颜色: ```python import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 2 * np.pi, 100) y1 = np.sin(x) y2 = -np.sin(x) # 绘制图形 plt.plot(x, y1, color='blue', linewidth=2, label='sin(x)') plt.plot(x, y2, color='red', linewidth=2, label='-sin(x)') plt.fill_between(x, y1, y2, where=y2>y1, interpolate=True, color='green', alpha=0.3) # 设置图形属性 plt.title('Sin and -Sin') plt.xlabel('x') plt.ylabel('y') plt.legend(loc='upper right') # 显示图形 plt.show() ``` 在这个示例中,我们首先使用numpy库生成了一个从0到2π之间的100个数据点。然后,我们分别计算了sin(x)和-sin(x)的值,并用plot函数绘制了两个曲线。 接下来,我们使用fill_between函数来填充两个曲线之间的区域。其中,where参数用于指定要填充的区域,interpolate参数用于控制填充的方式,color参数用于指定填充的颜色,alpha参数用于控制填充区域的透明度。 最后,我们设置了图形的标题、x轴标签、y轴标签和图例位置,并调用show函数显示图形。 通过这个示例,我们可以看到在matplotlib库中实现区域填充颜色的基本方法,我们可以根据实际需要对参数进行调整,实现更加复杂的图形效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值