小编Vin*_*ean的帖子

如何从单个组件创建 2D 透视变换矩阵?

我正在尝试从单个组件(如平移、旋转、缩放、剪切)创建一个 2D 透视变换矩阵。但最终矩阵并没有产生如下图所示的真实透视效果。我想我在为创建矩阵而编写的代码中缺少一些组件。有人可以帮我在下面的函数中添加缺少的组件及其公式吗?我的代码使用了 opencv 库

在此处输入图片说明

cv::Mat getPerspMatrix2D( double rz, double s, double tx, double ty ,double shx, double shy)
{

cv::Mat R = (cv::Mat_<double>(3,3) <<
        cos(rz), -sin(rz), 0,
        sin(rz), cos(rz), 0,
        0, 0, 1);

cv::Mat S = (cv::Mat_<double>(3,3) <<
        s, 0, 0,
        0, s, 0,
        0, 0, 1);


cv::Mat Sh = (cv::Mat_<double>(3,3) <<
        1, shx, 0,
        shy, 1, 0,
        0, 0, 1);


cv::Mat T = (cv::Mat_<double>(3,3) <<
        1, 0, tx,
        0, 1, ty,
        0, 0, 1);

return T * Sh …
Run Code Online (Sandbox Code Playgroud)

opencv transformation affinetransform perspective

3
推荐指数
1
解决办法
3397
查看次数