我在桌子上有一张白纸的图像,方向不同。像这样的东西:
现在,我检测到白皮书并获得了梯形的坐标。我现在有另一个图像,比如这样的键盘:
现在我的目标是用这个键盘取代那张纸。我发现可以使用getPerspectiveTransform
。我把here的代码作为我的首发。在那里,我代替output
,用output = imread("paper.jpg")
代替input
,input = imread("keyboard.jpg")
。并且之前也检测过白板的角落。
转换后用键盘替换白纸很有效,但是包含桌子,铅笔等的背景被涂黑了。整个背景变黑,只能看到替换白纸的键盘。
所以我想知道如何通过透视变换替换部分,仍然保留背景图像。
如果您没有编辑帖子中的代码,那么您正在转换键盘,但不会在其后面添加原始图像。您需要以某种方式将2个图像合成在一起。假设键盘图像有alpha通道,你可以遵循这个方法:https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python/。
如果它没有Alpha通道,您可以创建自己的蒙版并将输入和输出图像组合在一起,由蒙版调节:
composite = input
composite[mask != 0] = output * mask
祝好运!