我在桌子上有一张白色纸的图像,方向不同。像这样:
现在,我检测到白皮书并获得了梯形的坐标。我现在有另一个图像,比如这样的键盘:
现在,我的目标是用此键盘替换该纸张。我发现可以使用getPerspectiveTransform
。我将here给出的代码称为我的入门代码。
我在那里代替output
,喂饱了output = imread("paper.jpg")
,代替了input
,input = imread("keyboard.jpg")
。并且还早些时候就检测到了白板的角落。
通过转换后用键盘替换白皮书,效果很好,但是包含书桌,铅笔等的背景被涂黑了。整个背景变成黑色,只能看到替换白皮书的键盘。
所以我想知道如何通过透视变换替换该部分,同时仍然保留背景图像。
答案 0 :(得分:0)
如果您未编辑帖子中的代码,则说明您正在转换键盘,但未在其后添加原始图像。您需要以某种方式将两个图像合成在一起。假设键盘图像具有Alpha通道,则可以采用以下方法:https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python/。
如果它没有Alpha通道,则可以创建自己的遮罩并将输入和输出图像组合在一起,并通过遮罩进行调整:
composite = input
composite[mask != 0] = output * mask
祝你好运!