首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用OpenCV检测透视角并进行透视变换

利用OpenCV检测透视角并进行透视变换
EN

Stack Overflow用户
提问于 2016-07-24 10:00:19
回答 1查看 1.3K关注 0票数 3

我有一些内容需要使用OpenCV来检测。在将检测应用到内容本身之前,我需要检测透视失真的角度并修复它。也许我可以使用QR-代码是如何实现它的想法--为图像添加几个锚。不会有任何方形的内容,因此源图像看起来可能如下:

源图像

这三个广场将是我们的锚。

在使用OpenCV时,据我所知,我应该执行以下操作:

  1. 利用cvtColor函数对图像应用灰度格式。
  2. 使用blurGaussianBlur应用模糊。
  3. 应用thresholdCanny
  4. 使用findContours并对结果进行分析,通过检查顶点数或相似值来找出这三个方格。
  5. 应用perspectiveTransformwarpPerspective函数对正方形位置进行分析,并对源图像进行相应的变换。

问题是,实际上我不知道应该使用哪些参数,步骤5中方法调用的顺序是什么。我对编码和数学还不熟悉,所以我很感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-07-25 09:00:27

我假设您的主要问题是如何从三个2D对应找到一个转换,并相应地扭曲图像。

注意,3个点只定义了一个仿射变换,而不是透视图。(如果你的视角很小,例如,当一个物体离相机很远时,仿射变换是非常好的。)

2D仿射矩阵是3x3矩阵,最后一行是[0 0 1]。(对于透视矩阵,零值可能是任意的。)

您可以通过求解一个线性系统来计算仿射变换,如答案https://stackoverflow.com/a/2756165/2079934中所描述的。(解决方案是独一无二的。)

当你有仿射矩阵时,你可以应用warpAffine (而不是warpPerspective)来校正图像。transformations.html#warpaffine

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

https://stackoverflow.com/questions/38550813

复制
相关文章

相似问题

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