iphone - 像 camscanner 一样裁剪 UIImage

标签 iphone objective-c uiimage core-animation crop

我卡在我的应用程序功能中了。我想要类似于 Cam Scanner Cropping 的裁剪功能。 CAM-SCANNER 的屏幕是: 我创建了类似的裁剪 View 。

enter image description here

enter image description here

我得到了四个角的CGPoint。 但是我怎样才能获得倾斜的裁剪图像。

如果可能,请给我一些建议。

最佳答案

这是一个透视变换问题。在这种情况下,他们在 2D 平面中绘制 3D 投影。

因为,第一个图像的选择角是四边形的,当您将其转换为矩形时,您将需要添加更多像素信息 ( interpolation ) 或删除一些像素。

所以现在实际的问题是向裁剪后的图像添加额外的像素信息并将其投影以生成第二张图像。它可以通过多种方式实现:

<>您可以通过应用带插值的透视变换矩阵自行实现。

<> 你可以使用 OpenGL .

<> 你可以使用 OpenCV . ..还有更多的方法来实现它。

我已经使用 OpenCV 解决了这个问题。 OpenCV 中的以下函数将帮助您实现这一目标。

  1. cvPerspectiveTransform

  2. cvWarpPerspective

第一个函数将使用源和目标投影坐标计算变换矩阵。在您的情况下, src 数组将具有来自 CGPoint 的所有角的值。并且 dest 将具有矩形投影点,例如 {(0,0)(200,0)(200,150)(0,150)}。

获得转换矩阵后,您需要将其传递给第二个函数。你可以访问这个thread .

OpenCV 库可能没有其他替代品,但它有很好的图像处理算法集合。

带有 opencv 库的 iOS 应用程序可在 eosgarden 获得.

关于iphone - 像 camscanner 一样裁剪 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477195/

相关文章:

ios - 如何以与系统音量不同的音量播放 iPod 音乐库中的轨道?

objective-c - 是否可以像对待结构成员一样对待数组的索引?

ios - 如何获取gif资源UIImage

ios - UIImage imageNamed : 上的实时应用程序崩溃

ios - NEHotspotConfiguration 中的 joinOnce 是做什么的?

iphone - UINavigationController 中的 UITableView

iphone - paypal的iphone支付sdk是苹果认可的吗?

objective-c - Objective-C 中如何将 double 值舍入为下一个整数值?

objective-c - 将按键添加到 iPad 键盘

ios - 将 UIImage 设置为 UIImageView 以节省内存时是否需要调整 UIImage 的大小?