当前位置: 首页 > news >正文

【数据增强】90°、180°和270°翻转图片(*4)

前言

        参加了“智蔗见智·向新而生”广西第二届人工智能大赛,但是他给的数据集只有不到100张,对于语义分割模型的训练来说实在是杯水车薪,我们队的处理方案是:先按照十字架方式裁剪图片,之后再进行3个角度的翻转,一系列数据增强的操作了数据集的数量是原来的4*4=16倍,已经可以满足模型的训练要求!而本文正是记录旋转这个数据增强的方式。

记录按十字架裁剪图片方式如下链接:

十字架裁剪图片http://t.csdn.cn/tAXp1


【数据增强】90°、180°和270°翻转图片(*4)

效果展示

旋转之前的图片:

旋转之后的图片:

90° 

180° 

270° 

代码 

 单张图片:

遍历目录:


效果展示

旋转之前的图片:

旋转之后的图片:

90° 

180° 

270° 

成品库

'''
@param:im_path,图片路径,例如:img/test.png
@param:im_name,图片名称,例如:test.png
@param:save_path,保存路径,默认为工作路径
'''

import os
import shutil
from PIL import Image
'''
@param:im_path,图片路径,例如:img/test.png
@param:im_name,图片名称,例如:test.png
@param:save_path,保存路径,默认为工作路径
'''
def strong_dataset(im_path, im_name, save_path=''):
   im = Image.open(im_path)
   part1_im = im.transpose(Image.ROTATE_90)
   part1_im.save(os.path.join(save_path, '90_'+im_name))
   part2_im = im.transpose(Image.ROTATE_180)
   part2_im.save(os.path.join(save_path, '180_'+im_name))
   part3_im = im.transpose(Image.ROTATE_270)
   part3_im.save(os.path.join(save_path, '270_'+im_name))

 1.单张图片处理代码:

import os
import shutil
from PIL import Image

def strong_dataset(im_path, im_name, save_path=''):
   im = Image.open(im_path)
   part1_im = im.transpose(Image.ROTATE_90)
   part1_im.save(os.path.join(save_path, '90_'+im_name))
   part2_im = im.transpose(Image.ROTATE_180)
   part2_im.save(os.path.join(save_path, '180_'+im_name))
   part3_im = im.transpose(Image.ROTATE_270)
   part3_im.save(os.path.join(save_path, '270_'+im_name))

if __name__ == "__main__":
    strong_dataset('img/test.png', 'test.png', save_path='img')

2.遍历目录图片代码:

import os
import shutil
from PIL import Image

def strong_dataset(im_path, im_name, save_path=''):
   im = Image.open(im_path)
   part1_im = im.transpose(Image.ROTATE_90)
   part1_im.save(os.path.join(save_path, '90_'+im_name))
   part2_im = im.transpose(Image.ROTATE_180)
   part2_im.save(os.path.join(save_path, '180_'+im_name))
   part3_im = im.transpose(Image.ROTATE_270)
   part3_im.save(os.path.join(save_path, '270_'+im_name))

if __name__ == '__main__':
    # 遍历一个文件夹所有的图片进行旋转,并且保存
    ori_path = r'VOCdevkit\VOC2007\JPEGImages'
    for ori_name in os.listdir(ori_path):
        temp = os.path.join(ori_path, ori_name)
        strong_dataset(temp, ori_name, save_path=ori_path)


        

3.输出说明 

'''
假设:你有这样一张图片 test.png
那么裁剪后将保存为

90_test.png 
180_test.png 
270_test.png 
原图片不会删除!
'''

完毕!

如果大家觉得有用,欢迎三连~ 

相关文章:

  • 【Hadoop---07】HDFS 读 / 写 数据流程(面试重点)
  • 【笔记】C#得到真正的屏幕大小
  • SSH远程端口转发
  • 微信支付配置信息如何获取
  • nginx反向代理实例
  • webpack与vite对比
  • Linux中的权限机制
  • 字符串函数【C语言-3】
  • 【Docker】Docker-Compose基础使用说明
  • 用python抠图
  • Java Object类下getClass()方法具有什么功能呢?
  • MongoDB安装使用教程
  • 封装js一些常用的方法(默认值、数组、判空、数值等等)
  • OpenCV之图片预处理方法
  • 跟我学Python图像处理丨傅里叶变换之高通滤波和低通滤波
  • 【css3】浏览器内核及其兼容性
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 2017 前端面试准备 - 收藏集 - 掘金
  • HashMap ConcurrentHashMap
  • IDEA常用插件整理
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • java 多线程基础, 我觉得还是有必要看看的
  • mysql外键的使用
  • MySQL用户中的%到底包不包括localhost?
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Spring核心 Bean的高级装配
  • SQLServer插入数据
  • SQLServer之创建数据库快照
  • Vue.js源码(2):初探List Rendering
  • 面试遇到的一些题
  • 面试总结JavaScript篇
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 微信小程序开发问题汇总
  • 项目管理碎碎念系列之一:干系人管理
  • 通过调用文摘列表API获取文摘
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​520就是要宠粉,你的心头书我买单
  • #include到底该写在哪
  • #LLM入门|Prompt#3.3_存储_Memory
  • #pragma预处理命令
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)SpringCloud 整合Python
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (多级缓存)多级缓存
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (五)MySQL的备份及恢复
  • (原)Matlab的svmtrain和svmclassify
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)jQuery 基础
  • ***监测系统的构建(chkrootkit )
  • ***检测工具之RKHunter AIDE