【问题标题】:What is the difference between warpPerspective and perspectiveTransform?warpPerspective 和 perspectiveTransform 有什么区别?
【发布时间】:2016-03-11 00:57:09
【问题描述】:

我使用了四组点来获得透视变换矩阵。然后使用warpPerspective 将矩阵A 转换为矩阵B。从垫子 A 点 a。我想在垫子 B 中获得新点 a 的位置。但 warpPerspective 不能这样做,而 perspectiveTransform 可以。

这里我想知道perspectiveTransform得到的位置是否与使用warpPerspective在矩阵B中的位置相同。

那么,warpPerspective 和 perspectiveTransform 有什么区别?

Mat trans = getPerspectiveTransform(dst, gpsPoints);
warpPerspective(A, B, trans, image.size());
Point2f a = Point2f(..., ...);         //were known
vector<Point2f> obj(1);
obj[0] = a;
vector<Point2f> b; 
perspectiveTransform(obj, b, trans);//if the new point in B is c, is c equals to b?

【问题讨论】:

    标签: c++ opencv transform


    【解决方案1】:

    warpPerspective 适用于图像。换句话说,warpPerspective 可以使用 H(Homography 或 warpMatrix)扭曲图像 A 并将结果放入 B,因此它具有以下结构:

    void warpPerspective(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, int borderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())
    

    src 是您要变形的Mat,dst 将存储结果。

    perspectiveTransform 适用于点集。它将 H(Homography 或 warpMatrix)应用于点集(例如在 vector 中)并将结果放在另一个 vector 中。结果是应用翘曲后第一个vector 中的点。它具有以下结构:

    void perspectiveTransform(InputArray src, OutputArray dst, InputArray m)
    

    其中src 是输入点,dst 是扭曲输入点的结果。

    结论:

    在数学上,他们都做同样的事情,即使用 H 扭曲一组点。

    技术上,warpPerspective 在Mat 的坐标上执行此操作,并将像素值(颜色)移动到新像素。 perspectiveTransform,它只是计算点的新坐标并将其存储在新的vector中。

    【讨论】:

    • 那么。你的意思是我的结果是一样的?
    猜你喜欢
    • 2011-11-12
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    相关资源
    最近更新 更多