gpt4 book ai didi

c++ - OpenCV 透视图

转载 作者:IT老高 更新时间:2023-10-28 22:23:29 27 4
gpt4 key购买 nike

由于某种原因,每当我使用 OpenCV 的 warpPerspective() 函数时,最终的变形图像不包含原始图像中的所有内容。图像的左侧部分似乎被切断了。我认为发生这种情况的原因是因为扭曲的图像是在 Canvas 的最左侧位置为 warpPerspective() 创建的。有没有办法解决这个问题?谢谢

最佳答案

出现问题是因为单应性将图像的一部分映射到图像区域之外的负 x,y 值,因此无法绘制。我们希望做的是将扭曲的输出偏移一些像素,以将整个扭曲的图像“分流”到正坐标(因此在图像区域内)。

可以使用矩阵乘法来组合单应性(这就是它们如此强大的原因)。如果A和B是单应性,则AB表示先应用B,再应用A的单应性。

因此,我们需要做的就是偏移输出,为平移创建一些偏移量的单应矩阵,然后将其预乘以我们的原始单应矩阵

二维单应矩阵如下所示:

[R11,R12,T1]
[R21,R22,T2]
[ P , P , 1]

其中R代表旋转矩阵,T代表平移,P代表透视扭曲。所以一个纯平移的单应性看起来像这样:

[ 1 , 0 , x_offset]
[ 0 , 1 , y_offset]
[ 0 , 0 , 1 ]

因此,只需将您的单应性预乘以与上述类似的矩阵,您的输出图像就会发生偏移。

(确保使用矩阵乘法,而不是元素乘法!)

关于c++ - OpenCV 透视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6087241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com