Python和OpenCV生成的拼接图像中的黑色接缝

时间:2015-01-16 16:22:27

标签: opencv image-processing computer-vision panoramas image-stitching

(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_crossnext_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_crossnext_cross放回而不是混合cross_blend?我该怎么做才能消除这些黑色接缝? 这是我的结果图片:http://i.stack.imgur.com/jtiQO.jpg

0 个答案:

没有答案