栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

【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的效果预览:

目前暂时还是半成品,有很多细节没写好,因为这种数据量在几万张图起步,需要估计到很多细节,写这种逻辑很费劲


碎碎念:
这篇文章算是记录向的日志笔记,善于总结才是学习最好的方式,然后其它的代码我就不放出来了,写的烂,同时也没必要,而且看别人的代码是一种很折磨的行为,在做这个东西的时候,我翻遍了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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号