【发布时间】:2014-07-17 16:42:57
【问题描述】:
我想根据具有角度 (arcTan(a)) 的直线 (y=ax+b) 的大小转换整个图像,该角度应仅应用于所有点的 y 轴。
我想使用warpAffine(...)
方法,但我能够使用此方法使用图像中的点(通常为 3),以便 warpAffine(...) 可以自己计算角度并转换图像的那部分,这不是我的需要,因为我想改变整个图像而不仅仅是一块。
如果有办法用warpAffine(...) 或任何其他方法做到这一点,请告诉我
cv::Mat t(3,3,CV_64F);
t=0;
t.at<double>(0,0) = 1;
t.at<double>(1,1) = 1;
t.at<double>(0,1) = -tan(0.17);
t.at<double>(2,2) = 1;
cv::Mat dest;
cv::Size size(imgb1.cols,imgb1.rows);
warpAffine(imgb1, dest, t, size, INTER_LINEAR, BORDER_CONSTANT);
imshow("outputImage.jpg", dest);
这就是我现在可以实现的,我的转换矩阵是这样的:
1 -tan(angle) 0
0 1 0
0 0 1
【问题讨论】:
-
"...但它要求目标顶点..." - 我不这么认为,你确定你检查了the documentation?
-
谢谢,我编辑了我的问题。事实上,我确实给了它一个变换矩阵,但我不知道如何用我找到的角度来表示它
-
您能否向我们展示您的代码中生成转换矩阵然后扭曲图像的部分?
-
这是我到现在为止的成就
标签: c++ opencv math graphics transformation