【问题标题】:opencv reverse perspective transformation?opencv反向透视变换?
【发布时间】:2021-10-27 16:16:11
【问题描述】:

我从下图开始:

使用 opencv 我绕 Y 轴旋转 45° 得到以下结果:

如果我再努力一点,我可以让它不在前景中被裁剪。

现在我的问题是:opencv 是否有工具来进行反向转换?我可以拍摄第二张图像并制作第一张图像吗? (不关心模糊像素。)请提出一种方法。

【问题讨论】:

    标签: opencv perspective


    【解决方案1】:

    是的,有可能。旋转 45° 后,下方和上方的某些区域缺失(未看到)。你只是不能拿回那些零件。

    通过同时使用warpPerspective() 和getPerspectiveTransform(),您可以轻松返回到第一张图片。您唯一需要考虑的是您应该确定旋转图像的端点。如:left_up、right_up、left_down、right_down。由于您没有指定语言,因此我使用 C++ 来实现这些功能。这是输出和代码:

    #include <opencv2/imgproc/imgproc.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
    #include <fstream>
    
    int main()
    {
    
        cv::Mat begin = cv::imread("/ur/img/dir/input.jpg");
        cv::Mat output;
        cv::Point2f Poly2[4] = {
                      cv::Point2f(31,9),
                      cv::Point2f(342,51),
                      cv::Point2f(28,571),
                      cv::Point2f(345,525),   //points I got from looking in paint.
    
    
        };
    
        cv::Point2f Points[4] = {
                      cv::Point2f(0,0),
                      cv::Point2f(432,0),
                      cv::Point2f(0,576),       //The picture I want to transform to.
                      cv::Point2f(432,576),
    
        };
    
    
    
        cv::Mat Matrix = cv::getPerspectiveTransform( Poly2,Points);
    
        cv::warpPerspective(begin, output, Matrix, cv::Size(432, 576));
    
        cv::imshow("Input", begin);
        cv::imshow("Output", output);
    
    
        cv::imwrite("/home/yns/Downloads/tt2.jpg",output);
        cv::waitKey(0);
    
    
        return 0;
    }
    

    【讨论】:

      【解决方案2】:

      是的。

      你已经制作了一个单应矩阵来生成这张图片,对吧?

      只需反转它 (H.inv()) 或pass the WARP_INVERSE_MAP flag。

      不需要所有其他的东西。

      【讨论】:

      • 现在等一下。据我了解,透视变换涉及除法,不能仅用矩阵乘法来表示。正确的?那么矩阵求逆怎么可能足够呢?
      • 这就是第三维的用途。它是投影空间中的附加维度。划分发生在之后,从投影空间移动到“平面”空间。 ——你的问题听起来好像如果我不给你一个满意的答案,你会完全拒绝这些东西,所以你应该拿一本数学书,而不是把我放在这儿。信不信由你。单应矩阵(一个简单的矩阵)可以进行透视变换,您应该不会感到惊讶,因为您已经使用单应矩阵来创建图片。
      猜你喜欢
      • 1970-01-01
      • 2011-08-26
      • 2021-01-05
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2015-01-04
      相关资源
      最近更新 更多