本文主要介绍实现方法,关于原理部分,请读者阅读:https://drustz.com/posts/2015/10/17/poisson/
采用python3来实现融合,举例说明。
图一
图二
本文主要做的事情是将图二的飞机抠出来融合到图一中,采用代码实现。
实现效果
实现代码
1.建立images等文件夹如下:
results:存放融合的结果图片。
source/data:存放如图二的图片。
source/mask:存放抠出来的如飞机的黑白mask图片。
target/data:存放如图一的图片。
target/mask:存放飞机的mask拖入到目标图的mask的合成图。
2.编写mask的生成代码
class MaskPainter():
def __init__(self, image_dir, mask_dir):
self.image_dir = image_dir
self.mask_dir = mask_dir
def _read_img(self, image_path):
self.image = cv2.imread(image_path)
self.image_copy = self.image.copy()
self.mask = np.zeros(self.image.shape)
self.mask_copy = self.mask.copy()
self.size = 10
self.to_draw = False
self.window_name = "Draw mask. s:save; r:reset; q:quit"
def _paint_mask_handler(self, event, x, y, flags, param):
if event == cv2.EVENT_LBUTTO