iOS中的UIImage视图矩阵变换

iOS中的UIImage视图矩阵变换,ios,Ios,我尝试在iOS上更改imageView矩阵,不是通过CATTransformM3D,也不是通过MeshTransform,而是使用转换矩阵更改整个图像的顶点。在Android上,我使用了矩阵库中的方法“setpolytoply”。有谁能告诉我如何在iOS中做到这一点吗。其效果类似于Android的“SetPolytoply”方法? 还是我的想法错了,应该使用Metal或OpenGL? 我加了3张图片。我希望每个人都能理解我想要的效果。 此外,我还想知道如何依靠图片上的3个点来截取三角形UIIma

我尝试在iOS上更改imageView矩阵,不是通过CATTransformM3D,也不是通过MeshTransform,而是使用转换矩阵更改整个图像的顶点。在Android上,我使用了矩阵库中的方法“setpolytoply”。有谁能告诉我如何在iOS中做到这一点吗。其效果类似于Android的“SetPolytoply”方法? 还是我的想法错了,应该使用Metal或OpenGL? 我加了3张图片。我希望每个人都能理解我想要的效果。
此外,我还想知道如何依靠图片上的3个点来截取三角形UIImage。

您可以使用OpenCV进行截取。你可以找到一个简单的UIIGM类别(注意这是目标C++代码)。p>
我可以用CIFilter的“透视变换”来实现这一点。原件:

转换后:

要记住的事情:

  • CIFilter的坐标系相对于iOS翻转(即原点位于左下角,而不是左上角)

  • 如果你想在用户拉伸图像时实时完成这类工作,你需要使用金属;CIContext渲染无法将其剪切


这个答案是做透视变换,有很多方法,但结合我最终需要做的,我使用了OpenCV,并在这个过程中学习了计算机图形学。 顺便说一下,事实上,我需要做的是仿射变换。IOS和Android有点不同。Android库方法将3个点作为仿射传递,4个点作为传输传递。除息的
谢谢朋友们的回答。

谢谢你们的回答。经过2天的学习,似乎也可以通过CIFilter实现这种效果。我稍后会尝试,并比较它们实现的效果。在实时更改的同时,我还需要更改图像的透明度。金属能做到吗?为了达到这个目的,你能给我一些学习金属的建议吗?
OpenCV -> UIImage
cv::Mat mat /* = ... */;
UIImage* image = [UIImage fromCvMat:mat];
UIImage -> OpenCV

UIImage* image /* = ... */;
cv::Mat mat = [UIImage toCvMat:image];