gpt4 book ai didi

iphone - 将 CGPoints 集转换为 CATransform3D 以校正图像

转载 作者:行者123 更新时间:2023-12-03 20:15:12 26 4
gpt4 key购买 nike

我有一个包含梯形部分的图像,我需要将其转换为正方形(倾斜校正)。我真的很难理解 3D 变换矩阵,并且不知道从哪里开始。

目前我有 4 个 CGPoints 代表一个倾斜的形状,我还有 4 个 CGPoints 代表一个均匀的矩形。如何将最初的 4 个 CGPoints 转换为 3D 变换矩阵以校正图像?

我基本上是在寻找与此相反的内容:iPhone image stretching (skew)

其中第一个图像将是输入形状,而方形图像将是输出。

有人能指出我正确的方向吗?

最佳答案

找到 2 个最高的 CGPoint,并将它们调平,同时对 2 个最低的 CGPoint、最左边的 2 个 CGPoint 和最右边的 2 个 CGPoint 进行调平。

//assuming skewpoint1 & skewpoint2 are the highest points
if (skewpoint1.y < skewpoint2.y)
skewpoint1.y += speed;
skewpoint2.y -= speed;
else
skewpoint1.y -= speed;
skewpoint2.y += speed;

对最低点和最左边 2 个和最右边 2 个 CGPoint 的 x 值进行类似操作。

您还可以添加一个捕捉功能,当两点之间的速度小于 2 倍速时,可以捕捉到两个点的中心点,即

if (abs(skewpoint1.y - skewpoint2.y) < (speed*2))
//depending on which CGPoint is higher
skewpoint1.y += (abs(skewpoint1.y - skewpoint2.y)/2);
skewpoint2.y -= (abs(skewpoint1.y - skewpoint2.y)/2);

关于iphone - 将 CGPoints 集转换为 CATransform3D 以校正图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11850924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com