需求:将一张图和另外一张图进行融合,自定义位置。
1. 图像融合
Blend函数
from PIL import Image
img_1 = Image.open(r'lenna.png').resize((32,32))
img_2 = Image.open(r'00000_00001.jpg').resize((32,32))
img_blend = Image.blend(img_1, img_2,0.4) # 需满足两张图片的像素一样;其次,括号里面最后一个参数0.4可以任意调节大小,数值越大,第二张图越突出。
img_blend.save(r'1.jpg') # save存储图片至指定的地址。
大概的原理是:
I
m
g
=
I
m
g
1
(
1
−
α
)
+
I
m
g
⋅
α
Img=Img_1(1-\alpha)+Img\cdot\alpha
Img=Img1(1−α)+Img⋅α
需要自主测试一下透明图的效果,与透明图进行融合的效果应该是只有透明的位置加上去。
遗憾的是这种方法无法实现位置的自定义。
Paste和Composite 方法
- 先new一个RGBA的图像。
- paste贴上加载的两张图像。
- 插值再插出来。
file = mix(file, verse, co)
# 图片融合
def mix(img1,img2,coordinator):
im = img1
mark = img2
layer = Image.new('RGBA', im.size, (0, 0, 0, 0))
layer.paste(mark, coordinator)
out = Image.composite(layer, im, layer)
return out
四个0的位置就是在调整融合的图片的位置
2. 变量保存
Pickle
pickle很强大,可以保持Python原生数据类型和自定义的类。
import pickle
pickle.dump(grads, open("grads", 'wb'))
grad=pickle.load(open("grads", 'rb'))
- dump(变量, 文件指针)
- load(文件指针)
使用都需要用到open命令。
Numpy
如果是numpy变量可以调用numpy的save和load命令
- np.save(filename,array)
- np.load(filename)
3. 时间格式化
获取当前时间并格式化
import time
print(time.strftime("[%b %d %Y %H:%M:%S]", time.localtime()))
Log函数
import time
def Log(*args):
nowtime=time.strftime("[%H:%M:%S]",time.localtime())
print(nowtime,end='')
for i in args:
print(i,end=" ")
print()