IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-使用PIL工具包将图片分割成四等分再还原 -> 正文阅读

[Python知识库]python-使用PIL工具包将图片分割成四等分再还原

今天随便分享一个,图片批量分割的代码,把图片分割成四等份,多用于扩增数据集用,

也可以再还原回去。

代码如下:

from PIL import Image

dir = './1111.jpg'    #当前图片路径
image = Image.open(dir)    #读入当前图片
img = image.convert('RGB')      #转换成RGB三通道格式
w = img.size[0]               #获取图片宽度
h = img.size[1]               #获取图片高度
img_1 = img.crop([0, 0, w/2, h/2])       #获取左上1/4的图片
img_1.save('./' + '1' + '.jpg')          #保存在本地图片命名为1.jpg
img_2 = img.crop([w/2, 0, w, h/2])       #获得右上1/4的图片
img_2.save('./' + '2' + '.jpg')          #保存在本地图片命名为2.jpg
img_3 = img.crop([0, h/2, w/2, h])       #获取左下1/4的图片
img_3.save('./' + '3' + '.jpg')          #保存在本地图片命名为3.jpg
img_4 = img.crop([w/2, h/2, w, h])       #获取右下1/4的图片
img_4.save('./' + '4' + '.jpg')          #保存在本地图片命名为4.jpg

我们我这里代码为1.py, 原图是1111.jpg的猫图片,被分成了4个等分,那么如何还原回去那,

代码如下:

#4个图像拼接成一个
target = Image.new('RGB', (w, h))    # 首先创建一块背景布
for i in range(0,4):              #循环4次拼接图片
    print(i)
    if i == 0:
        location = (0, 0)                   #放置位置在左上
        target.paste(img_1, location)
    if i == 1:
        location = (w//2, 0)                   #放置位置在右上
        target.paste(img_2, location)
    if i == 2:
        location = (0, h//2)                   #放置位置在左下
        target.paste(img_3, location)
    if i == 3:
        location = (w//2, h//2)                 #放置位置在右下
        target.paste(img_4, location)

target.save("./2222.jpg")

可以看到图片2222.jpg是完美的还原回去了

那么最后再教一下如何批量对图片分割成4等分把

比如你现在在一个文件夹下,有如果子文件夹,每个文件夹里面又有若干个图片

输入代码如下:

import os
from PIL import Image
b = 0
dir = './1/'            #目录文件夹名称
files = os.listdir(dir)
files.sort()
while(b < 1):#1是因为目录文件夹下只有一个子文件夹,要是对多个文件夹图像批量处理,只要改成相应数目即可
    #这里采用的是判断文件名的方式进行处理
    ss = './1/' + str(files[b]) + '/' #训练图片
    pics = os.listdir(ss) #得到1文件下所指文件内的图片
    i = 1
    for each_bmp in pics:  # 遍历,进行批量转换
        first_name, second_name = os.path.splitext(each_bmp)
        each_bmp = os.path.join(ss, each_bmp)
        image = Image.open(each_bmp)
        img = image.convert('RGB')
        w = img.size[0]               #获取图片宽度
        h = img.size[1]               #获取图片高度
        img_1 = img.crop([0, 0, w/2, h/2])       #获取左上1/4的图片
        img_1.save(ss + str(i) + '.jpg')          #保存在本地图片命名为1.jpg
        i += 1
        img_2 = img.crop([w/2, 0, w, h/2])       #获得右上1/4的图片
        img_2.save(ss + str(i) + '.jpg')          #保存在本地图片命名为2.jpg
        i += 1
        img_3 = img.crop([0, h/2, w/2, h])       #获取左下1/4的图片
        img_3.save(ss + str(i) + '.jpg')          #保存在本地图片命名为3.jpg
        i += 1
        img_4 = img.crop([w/2, h/2, w, h])       #获取右下1/4的图片
        img_4.save(ss + str(i) + '.jpg')          #保存在本地图片命名为4.jpg
        i += 1
        os.remove(ss + first_name + '.jpg')      #图片被分割4等分之后,删除原图片
    b += 1

处理结果

还是很简单的吧,如果有打赏的话,将会大大加快小弟更新速度,在这谢过各位大爷。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:36:07  更:2021-07-11 16:37:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 23:00:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码