OpenCV C ++中透视转换中的图像保留

问题描述 投票:0回答:1

我在桌子上有一张白纸的图像,方向不同。像这样的东西:

enter image description here

现在,我检测到白皮书并获得了梯形的坐标。我现在有另一个图像,比如这样的键盘:

enter image description here

现在我的目标是用这个键盘取代那张纸。我发现可以使用getPerspectiveTransform。我把here的代码作为我的首发。在那里,我代替output,用output = imread("paper.jpg")代替inputinput = imread("keyboard.jpg")。并且之前也检测过白板的角落。

转换后用键盘替换白纸很有效,但是包含桌子,铅笔等的背景被涂黑了。整个背景变黑,只能看到替换白纸的键盘。

所以我想知道如何通过透视变换替换部分,仍然保留背景图像。

c++ image-processing opencv3.0 perspectivecamera
1个回答
0
投票

如果您没有编辑帖子中的代码,那么您正在转换键盘,但不会在其后面添加原始图像。您需要以某种方式将2个图像合成在一起。假设键盘图像有alpha通道,你可以遵循这个方法:https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python/

如果它没有Alpha通道,您可以创建自己的蒙版并将输入和输出图像组合在一起,由蒙版调节:

composite = input
composite[mask != 0] = output * mask

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.