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

【Python学习笔记】

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

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

素材+实际效果:

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

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

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

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

; 代码如下:

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

from PIL import Image
img_jpg = Image.open("C:\bei_jing_tu.jpg")
img_jpg = img_jpg.convert("RGBA")
img_png = Image.open("C:\E2.png")
img_png = img_png.convert("RGBA")

img_jpg.paste(img_png, (50, 80), img_png)

img_jpg = img_jpg.convert("RGB")

img_jpg.show()
img_jpg.save("C:\new_jpg.jpg")

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

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

生成YOLO的效果预览:

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

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

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

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

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

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

jpg_list = os.listdir(jpg_path)
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日 补充 / 修改

Original: https://blog.csdn.net/bbc750ti/article/details/125399408
Author: 海纳百百川
Title: Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/633771/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球