Ari*_*van 7 python opencv image-processing homography python-3.x
我正在尝试使用 opencv-python 包通过单应性执行透视变换。
我有一个背景和前景图像,想要执行透视变换并在给定四个 (x, y) 坐标的背景图像上缝合前景图像,如下所示:
bgImg = cv2.imread(BACK_PATH, cv2.IMREAD_COLOR)
fgImg = cv2.imread(FORE_PATH, cv2.IMREAD_COLOR)
bgHeight, bgWidth, dpt = bgImg.shape
origImageCoords = np.array([(0, 0),
(0, bgHeight),
(bgWidth, bgHeight),
(bgWidth, 0)])
stitchingCoords = []
def transformPerspective():
y0 = 285
y1 = 400
x0 = 447
x1 = 600
stitchingCoords.append((x0, y0))
stitchingCoords.append((x0, y1))
stitchingCoords.append((x1, y1))
stitchingCoords.append((x1, y0))
homography = cv2.findHomography(origImageCoords, np.array(stitchingCoords))
dst_corners = cv2.warpPerspective(src=fgImg, M=homography[0], dsize=(bgWidth, bgHeight))
showFinal(bgImg, dst_corners)
Run Code Online (Sandbox Code Playgroud)
使用 完成透视变换后cv2.findhomography()
,我使用适当的遮罩遮罩前景和背景图像并将它们添加在一起,如下所示:
def showFinal(src1, src2):
grayed = cv2.cvtColor(src2, cv2.COLOR_BGR2GRAY)
_, grayed = cv2.threshold(grayed, 0, 255, cv2.THRESH_BINARY)
grayedInv = cv2.bitwise_not(grayed)
src1final = cv2.bitwise_and(src1, src1, mask=grayedInv)
src2final = cv2.bitwise_and(src2, src2, mask=grayed)
finalImage = cv2.add(src1final, src2final)
cv2.namedWindow("output", cv2.WINDOW_AUTOSIZE)
cv2.imshow("output", finalImage)
Run Code Online (Sandbox Code Playgroud)
问题是查找结果是错误的,因为变换后的前景图像没有缝合在我用于查找单应性的四个坐标内。
谁能指导我为什么会发生这个错误?
归档时间: |
|
查看次数: |
727 次 |
最近记录: |