【Python学习笔记】

使用PIL,批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等

起因:在了解很多关于YOLOv5的相关内容,于是尝试着去训练自己的游戏目标检测模型。
但是标注数据的繁杂过程,实在是非常的不优雅,所以,我准备采用用透明素材+实际地图场景,拼接起来,自动生成图片+标注数据。
理论存在,实践开始。


素材+实际效果:

png透明素材+jpg图片素材 ↑

最终合成拼接效果 ↑
这个方法适用于添加水印、logo、等等透明素材,当然你像我一样做合成的YOLO数据集也是没问题的

代码如下:

前排提醒,PIL库需要提前安装,pip install Pillow

from PIL import Image
img_jpg = Image.open("C:\bei_jing_tu.jpg") # 传入底图jpg或png
img_jpg = img_jpg.convert("RGBA") # 转换成带透明通道的模式
img_png = Image.open("C:\E2.png") # 传入png透明图片路径
img_png = img_png.convert("RGBA") # png图片可以不用转换img_jpg.paste(img_png, (50, 80), img_png)
# 将png图片 粘贴到jpg图片上的50, 80 坐标位置
img_jpg = img_jpg.convert("RGB") # 将图片转换回为RGB模式img_jpg.show() # 将该图片显示出来
img_jpg.save("C:\new_jpg.jpg") # 保存为jpg / png

这是图片合成的最关键部分

其中的转换成"RGBA"模式,其实不写也可以合成和保存,但是不知道为啥会时不时的报错,所以还是加上。
文章结束。


生成YOLO的效果预览:

↑ 初版,半成品,验证可行性


最终版,在640的底图中,合并20个目标图片,目标类别和位置都是随机的,实现了一分钟生成几千张图片和标注数据。
其中的代码就不放出来了,现在过了两个月回头看我自己写的代码,都有点看不懂了。。
(顺便说一下训练了一个demo,效果不太理想,可能是游戏素材和游戏内容有差距,或者目标太小、太相似,暂时放弃了)


碎碎念:
这篇文章算是记录向的日志笔记,善于总结才是学习最好的方式,然后其它的代码就不放了,太烂,而且看别人的代码是一种很折磨的行为,在做这个东西的时候,我翻遍了CSDN的很多图片合成的文章,硬是找不到最关键的代码是哪个,还有这一堆的广告就太膈应人了。。。。。
要么是同尺寸图片叠加融合,要么是一大串就扔过来了,也难以阅读无从下手,这种高度私人化的东西,每个人需求点是完全不相同的,也很难跑起来,改起来也费劲,所以我还是更倾向于自己重写一遍。
2022年6月22日00:15:06


最后附上几段代码,可以方便管理乱七八糟的路径、目录等

jpg_list = os.listdir(jpg_path) #传入文件夹路径,列出该文件夹下所有文件,赋值给list列表
for jpg_name in jpg_list: # 遍历这个列表,得到文件名jpg_file_path = os.path.join(jpg_path, jpg_name) # 将路径和文件名拼接起来,得到一个可迭代的绝对路径# 到这里就可以开始套娃循环,去处理一大顿乱七八糟的图片了

最后附上几个还不错的一些相关的文章

  • 图像PIL库的基础用法笔记
    [Link1 ] / Link2 / Link3
  • YOLOv5坐标数据解释+数据扩充+坐标转换 示例 Link
  • YOLOv5坐标计算方法+可视化验证yolo标注的脚本 示例 Link

2022年8月29日 补充 / 修改

Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等相关推荐

  1. 【Python学习笔记—保姆版】第四章—关于Pandas、数据准备、数据处理、数据分析、数据可视化

    第四章 欢迎访问我搞事情的[知乎账号]:Coffee 以及我的[B站漫威剪辑账号]:VideosMan 若我的笔记对你有帮助,请用小小的手指,点一个大大的赞哦. #编译器使用的是sypder,其中&q ...

  2. Python学习笔记(六)

    1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...

  3. Python学习笔记:常用第三方模块(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Deep learning with Python 学习笔记(9)

    神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推 ...

  5. python 学习笔记 (核心)

    python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[ ...

  6. python学习笔记_week14

    python学习笔记_week14 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. s1 1 import sock ...

  7. Python学习笔记——照片换底色

    1.去除图片背景 每月免费次数50次 参考: Python学习笔记--removebg库之抠图 2.生成蓝色图片和拼接两张 参考: Python学习笔记--PIL库(Pillow库) 3.代码 注意: ...

  8. OpenCV之Python学习笔记

    RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...

  9. 从滚动条到画布的几个代码文件——Python学习笔记之十七

    从滚动条到画布的几个代码文件--Python学习笔记之十七 这一章的继续学习,比在前的照片涉及代码要轻松一些,代码打完后的预期结果总能实现.特别让人欣慰的一点,文本上的文字理解好像上了一个台阶,不用多 ...

最新文章

  1. MySQL基础篇:逻辑架构
  2. SCSE 21fall 课程
  3. python运行py文件 sublime 快捷键_Sublime Text配置python以及快捷键总结
  4. JDK之ConcurrentHashMap
  5. ASP.NET中生成缩略图的代码
  6. 央行允许银行倒闭破产,那么储户的存款怎么办?
  7. asp.net core 2.0 web api基于JWT自定义策略授权
  8. 安装XDS110驱动时系统找不到指定文件
  9. Java 并发编程之线程池 ScheduledThreadPool
  10. html编辑四则运算,前端四则运算验证
  11. 微信表情包储服务器,微信新功能!不用存图就能发出海量表情包
  12. 回归的正则化模型:岭回归和Lasso回归(套索回归)
  13. lycos搜索引擎_Lycos中国推出全新搜索引擎
  14. 【机器人学】正运动学详解
  15. 免费电子书籍--网址
  16. 多线程并发测试工具类
  17. 中文的括号和英文的括号区别_易混标点符号:中英文冒号(:、:)、比号(∶)...
  18. 解决Excel表格输入身份证号码显示异常的问题
  19. 树莓派2使用TSL2561
  20. layui 自定义表格行高,自适应

热门文章

  1. 对联盟链的零星想法,欢迎指正交流
  2. 利用Python you-get 下载网页视频
  3. alt+tab突然不能切换窗口(樱桃机械键盘)
  4. Thinkphp中的assign() 和 display()
  5. 微信小程序,引入WeUI组件库 扩展组件库
  6. 解决Visual C++ Redistributable安装找不到vc_runtimeMinimum_x86.msi最简单办法
  7. FastAPI简单示例
  8. 【深度强化学习】DRL算法实现pytorch
  9. H5常见问题 微信踩过得坑
  10. 串行通信 - Modbus协议