首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV C++透视变换中的图像保留

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

Stack Overflow用户
提问于 2019-03-15 04:30:47
回答 1查看 61关注 0票数 0

我在桌子上有一张白纸的图像,有一个不同的方向。如下所示:

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

现在我的目标是用这个键盘取代那张纸。我发现可以使用getPerspectiveTransform。我引用了给here的代码作为我的初学者。在那里,我用output代替了output = imread("paper.jpg"),用input = imread("keyboard.jpg")代替了input。并且早些时候也检测到了白纸的边角。

改造后用键盘代替白纸,效果很好,但包含书桌、铅笔等的背景变黑了。整个背景变黑了,只有键盘取代了白纸。

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

EN

回答 1

Stack Overflow用户

发布于 2019-03-18 19:24:35

如果你没有编辑文章中的代码,你是在变换键盘,而不是在键盘后面添加原始图像。你需要以某种方式将这两张图片合成在一起。假设键盘图像有一个alpha通道,您可以遵循以下方法:https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python/

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

代码语言:javascript
运行
复制
composite = input
composite[mask != 0] = output * mask

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55171480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档