我有一个图像,我想从中获得垂直 ROI,应用一些转换并添加到另一个图像。
我在 StackOverflow 和其他论坛上阅读了很多问题和答案,但我仍然被这个问题困扰。目前我正在使用 OpenCV 的 C 接口,但如果需要,我可以使用 C++ 接口(我必须编写一个转换函数,因为我在 Cocoa 中使用 CGImageRef)。
要从顶部图像(见下文)到底部图像,我想我必须:
- 获取第一张图像的 ROI;
- 缩小它;
- 为我的“宽度”角度(角度固定)获取中心和2个圆圈之间的线上的交点;
- 扭曲图像,使角落粘在我的交点上;
- 围绕中心点旋转并将其放入输出图像中。
目前,我可以很好地做到这一点:
- 获得投资回报率;
- 用 cvResize 缩放它;
- 获取交点不应该太复杂,因为它是纯几何,我为了另一个目的实现了它。
但是,我完全不知道如何扭曲我的 ROI 的结果图像,而且我不知道在 OpenCV 中是否有可能。我必须使用一种透视校正吗?
而且,我一直在尝试我在这里找到的几个好的帖子解决方案,用旋转的边界框旋转,但目前没有好的结果。
编辑 :
好吧,我设法完成了工作的第一部分:
- 在基础图像中获取 ROI;
- 旋转并将其放置在距中心固定距离处。
我使用了这篇文章中解释和编码的方法:https ://stackoverflow.com/a/16285286/1060921
我只添加了一个变量来设置旋转点并获得我的内圈。
注意:我在调用该方法之前设置了 ROI,因此 post 方法中的 ROI 是......图像大小。然后我用 cvAdd 将它放在最终图像的中心。
在这里,我得到了相机输入的一个像素切片。我现在要做的是扭曲更大的切片,例如从内圈的 2 个像素到外圈的 5 个像素。