iPh*_*per 12 iphone core-animation crop objective-c uiimage
我被困在我的应用程序功能中.我想要裁剪功能类似于Cam Scanner Cropping.CAM-SCANNER的屏幕是:我创建了类似的裁剪视图.
我已经获得了四角的CGPoint.但是我怎样才能获得倾斜的裁剪图像.
如果可能的话,请给我一些建议.
这是透视变换问题.在这种情况下,他们正在2D平面中绘制3D投影.
因为,第一个图像具有四边形的选择角,当您将其转换为矩形时,您将需要添加更多像素信息(插值)或删除一些像素.
所以现在实际的问题是向裁剪的图像添加额外的像素信息并将其投影以生成第二图像.它可以通过各种方式实现:
<>你可以通过应用带插值的透视变换矩阵来实现它.
<>您可以使用OpenGL.
<>您可以使用OpenCV...还有很多方法可以实现它.
我用OpenCV解决了这个问题.OpenCV中的以下功能将帮助您实现此目的.
第一个函数将使用源和目标投影坐标计算变换矩阵.在你的情况下,src数组将包含来自CGPoint的所有角落的值.并且dest将具有矩形投影点,例如{(0,0)(200,0)(200,150)(0,150)}.
获得转换矩阵后,您需要将其传递给第二个函数.你可以访问这个帖子.
OpenCV库可能没有其他替代方案,但它具有良好的图像处理算法集合.
eosgarden提供带有opencv库的iOS应用程序.
我看到有两种可能性。第一个是计算倾斜图像的变换矩阵,并将其安装在视图图层的 CATransform3D 属性中。
这很简单,假设您知道如何形成进行拉伸的变换矩阵。我从未学过如何构建拉伸或倾斜图像的变换矩阵,所以我无法提供任何帮助。我建议谷歌搜索变换矩阵和拉伸/倾斜。
另一种方法是将要裁剪的图像部分转换为 OpenGL 纹理,并将该纹理映射到输出上。实际的纹理绘制部分很容易,但是需要完成大约 1000 公斤的 OpenGL 设置,并且为了完成任何事情还需要学习大量内容。如果您想走这条路,我建议您使用新的 iOS 5 GLKit 搜索简单的 2D 纹理示例。
归档时间: |
|
查看次数: |
3680 次 |
最近记录: |