원본에 마스킹 이미지(Gray Scale)을 합성을 하는데 검은색 마스킹은 원본 색상을 그대로 흰색 부분은 원본을 옅어지도록 마스킹을 만들어 봤다. 새로운 개인 프로젝트를 하면서 만들어본 간단한 이미지 합성 테스트 프로그램이다.
from PIL import Image
import cv2
#Original Image
org_img = Image.open('lady2.jpg')
org_PixelMap = org_img.load()
#Mask Image
mask_img = Image.open('xxx.jpg')
mask_PixelMap = mask_img.load()
#New Image
img = Image.new(org_img.mode, org_img.size)
pixelsNew = img.load()
for j in range(org_img.size[1]):
for i in range(org_img.size[0]):
x,y,z = mask_PixelMap[i,j]
if x == 0 and y==0 and z==0:
pixelsNew[i,j] = org_PixelMap[i,j]
elif x==255 and y==255 and z==255:
pixelsNew[i,j] = (255,255,255,255)
else:
a,b,c = org_PixelMap[i,j]
rgba = int(a+x)
if rgba > 255: rgba = 255
rgbb = int(b+y)
if rgbb > 255: rgbb = 255
rgbc = int(c+z)
if rgbc > 255: rgbc = 255
pixelsNew[i,j] = (rgba, rgbb, rgbc, 255)
org_img.close()
mask_img.close()
img.save("result.jpg")
img.close()
img1=cv2.imread('lady2.jpg')
img2=cv2.imread('xxx.jpg')
img3=cv2.imread('result.jpg')
print(img3.shape)
cv2.imshow("org", img1)
cv2.imshow("mask", img2)
cv2.imshow("result", img3)
cv2.waitKey(0)