加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 具有任意轮廓的OpenCV变换形状为矩形

发布时间:2020-12-15 00:34:54 所属栏目:Java 来源:网络整理
导读:简短的问题是如何使用OpenCV将下面的形状转换为矩形? 笔记: 形状轮廓不一定是直线 – 它们可能是 略微弯曲. 形状内的内容必须拉伸 因此,x轴和y轴都相同. 长篇故事: 我试图在纸张折叠2或4次之后纠正代表纸张的图像的扭曲,文本,徽标等,并使其几乎完全呈矩形
简短的问题是如何使用OpenCV将下面的形状转换为矩形?

笔记:

>形状轮廓不一定是直线 – 它们可能是
略微弯曲.
>形状内的内容必须拉伸
因此,x轴和y轴都相同.

长篇故事:
我试图在纸张折叠2或4次之后纠正代表纸张的图像的扭曲,文本,徽标等,并使其几乎完全呈矩形.

输入图像已经是黑白格式,并具有更正的透视.所以一切都很好,除了它在扭曲的边缘周围有黑色区域,文字有点波浪状.

我的想法是序列应该是这样的:

>找到纸张轮廓
>计算校正矩阵以将形状区域映射到适当的矩形区域
>使用计算矩阵变换图像

即我们用Imgproc.findContours进行透视校正,然后找到工作台角落,然后是Imgproc.getPerspectiveTransform,最后使用Imgproc.warpPerspective进行校正.

但我找不到适合这种情况的算法.

任何人都可以指出如何在图像处理中获得它吗?

解决方法

在这种情况下,您希望对该图像进行非线性转换.传统上,您将使用整个纸张的单个转换使其成为矩形.这可以仅使用角落来完成.更复杂的校正,如镜头失真,您需要在页面上拾取点,并断言它们应该是共面的,以生成转换矩阵.基本上,您需要了解图像中的几何图形才能使其失真.因此,您需要找到的几何图形是页面的三维表面.

为了找到损坏的纸张的高度非线性几何图形,您可以拍摄多个页面图像并对其进行三角测量.如果你想走这条路,请拿起Hartley和Zisserman的多视图几何副本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读