(ret,data_map) = cv2.threshold(cv2.cvtColor(next_img_warp, cv2.COLOR_BGR2GRAY), 0, 255, cv2.THRESH_BINARY)
(ret_base,data_map_base) = cv2.threshold(cv2.cvtColor(base_img_warp, cv2.COLOR_BGR2GRAY), 0, 255, cv2.THRESH_BINARY)
首先我将两个图像转换为灰度。然后我使用cv2.bitwise_and()
来获取重叠部分的蒙版。
mask =cv2.bitwise_and(data_map,data_map_base)
inv_mask = cv2.bitwise_not(mask)
然后我用掩码得到三个部分:
base_cross = cv2.add(base, base_img_warp, mask=mask, dtype=cv2.CV_8U)
next_cross = cv2.add(base, next_img_warp, mask=mask, dtype=cv2.CV_8U)
base_not_cross = cv2.add(base, base_img_warp, mask=inv_mask, dtype=cv2.CV_8U)
next_not_cross = cv2.add(base, next_img_warp, mask=inv_mask, dtype=cv2.CV_8U)
base
是黑色基本图像。
然后我使用base_cross
和next_cross
进行线性混合,得到混合重叠部分cross_blend =self.blendImage(base_cross,next_cross)
最后,我使用cv2.add
和掩码:
base_not_cross = cv2.add(enlarged_base_img, base_img_warp, mask=inv_mask, dtype=cv2.CV_8U)
next_not_cross = cv2.add(enlarged_base_img, next_img_warp, mask=inv_mask, dtype=cv2.CV_8U)
final_img = cv2.add(base_not_cross, next_not_cross, dtype=cv2.CV_8U)
final_img = cv2.add(final_img, cross_blend, dtype=cv2.CV_8U)
但我的问题是,为什么我在结果图片中得到这些黑色接缝,即使我将原始base_cross
或next_cross
放回而不是混合cross_blend
?我该怎么做才能消除这些黑色接缝?
这是我的结果图片:http://i.stack.imgur.com/jtiQO.jpg