Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 像camscanner一样裁剪图像_Iphone_Objective C_Uiimage_Core Animation_Crop - Fatal编程技术网

Iphone 像camscanner一样裁剪图像

Iphone 像camscanner一样裁剪图像,iphone,objective-c,uiimage,core-animation,crop,Iphone,Objective C,Uiimage,Core Animation,Crop,我被我的应用程序功能卡住了。我想要裁剪功能类似于Cam扫描仪裁剪。 CAM-SCANNER的屏幕为: 我创建了类似的裁剪视图 我获得了四个角的CG点。 但如何获得倾斜的裁剪图像。 如果可能的话,请给我一些建议。我认为有两种可能性。第一个是计算使图像倾斜的变换矩阵,并将其安装在视图图层的CATTransform3D属性中 这很简单,假设您知道如何形成进行拉伸的变换矩阵。我从未学会如何构造拉伸或扭曲图像的变换矩阵,因此我无法提供任何帮助。我建议谷歌搜索变换矩阵和拉伸/倾斜 另一种方法是将正在裁剪

我被我的应用程序功能卡住了。我想要裁剪功能类似于Cam扫描仪裁剪。 CAM-SCANNER的屏幕为: 我创建了类似的裁剪视图

我获得了四个角的CG点。 但如何获得倾斜的裁剪图像。


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

我认为有两种可能性。第一个是计算使图像倾斜的变换矩阵,并将其安装在视图图层的CATTransform3D属性中

这很简单,假设您知道如何形成进行拉伸的变换矩阵。我从未学会如何构造拉伸或扭曲图像的变换矩阵,因此我无法提供任何帮助。我建议谷歌搜索变换矩阵和拉伸/倾斜


另一种方法是将正在裁剪的图像部分转换为OpenGL纹理,并将纹理映射到输出。实际的纹理绘制部分将很容易,但有大约1000公斤的OpenGL设置要做,还有很多东西需要学习才能完成。如果你想继续这条路线,我建议你使用新的iOS 5 GLKit搜索简单的2D纹理示例。

这是一个透视变换问题。在这种情况下,它们将在二维平面中绘制三维投影

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

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

通过应用透视变换矩阵和插值,您可以自己实现它

你可以用

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

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

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

    一旦你们得到了变换矩阵,你们就需要把它传递给第二个函数。你可以参观这个

    OpenCV库可能没有其他替代品,但它有很多图像处理算法


    带有opencv库的iOS应用程序可在以下网址获得:

    使用链接中给出的代码:

    尝试使用CgContextOclip或CGContextClosePath,而不是使用CGRect和CGContextClipToRect

    虽然我没试过这个。。。但我尝试在ToucheSBegind和TouchesMoved以及TouchesEnd事件上使用CGContextClosePath绘制闭合路径


    希望这能给你的问题提供更多的见解…

    嗨,你能告诉我你是如何实现上述事情的吗?如果可能的话,你能分享一些教程或有用的链接吗?嗨,开发人员,你找到这个问题的解决方案了吗?请为这个功能添加代码。我需要像这样精确。嘿,你怎么能得到这些正方形的CG点,这样我们就可以画出裁剪的uiview点