1.从opencv读图片为彩色图片backgound,
2.此时的backgound存储格式是BGR,而PIL图片格式是RGB,把backgound变成RGB格式cv2.cvtColor(backgound,cv2.COLOR_BGR2RGB);
3.把backgound变成png图片,增加一层透明度值为255,img为numpy.array类型
img[:, :, :3] = backgound
img[:, :, 3] = np.full(gray.shape, 255)
4.通过Image.fromarray(np.uint8(img),"RGBA") 把numpy.array变成PIL.Image.Image对象
Image.fromarray(np.uint8(img),"RGBA")
5.通过PIL的Image.alpha_composite函数进行两个png格式图片融合
具体代码如下
import cv2
from PIL import Image
import numpy as np
def blend_two_images2(src,dst):
"""
:param src: 源图片
:param dst: 目标图片
:return: 源图片和目标图片融合的结果,重叠的部分源图片在上,目标图片在下
"""
if src.mode != 'RGBA':
src = src.convert('RGBA')
if dst.mode != 'RGBA':
dst = dst.convert('RGBA')
img = Image.alpha_composite(dst, src)
return img
def generate_chart(gray, back):
#产生纯色的背景图,位于图片的最底层
b = 0
g = 0
r = 255
a = 255
background = np.zeros((gray.shape[0],gray.shape[1],4))
# background[:, :,