加速运算warpAffine带参数WARP_INVERSE_MAP例程C++
时间: 2023-07-08 11:05:55 浏览: 162
warp_scan:用于arp_scan的Sinatra Web包装器
以下是使用参数WARP_INVERSE_MAP的warpAffine函数的例程,可以加速图像运算:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src = imread("input.jpg");
if (src.empty())
{
printf("Could not open or find the image!\n");
return -1;
}
Point2f srcTri[3];
srcTri[0] = Point2f(0, 0);
srcTri[1] = Point2f(src.cols - 1, 0);
srcTri[2] = Point2f(0, src.rows - 1);
Point2f dstTri[3];
dstTri[0] = Point2f(src.cols*0.0, src.rows*0.33);
dstTri[1] = Point2f(src.cols*0.85, src.rows*0.25);
dstTri[2] = Point2f(src.cols*0.15, src.rows*0.7);
Mat warp_mat = getAffineTransform(srcTri, dstTri);
Mat dst;
warpAffine(src, dst, warp_mat, src.size(), WARP_INVERSE_MAP);
imshow("Source Image", src);
imshow("Warped Image", dst);
waitKey();
return 0;
}
```
在此示例中,我们首先加载输入图像,然后定义源三角形和目标三角形的顶点,并使用这些顶点生成仿射变换矩阵。然后,我们使用warpAffine函数和参数WARP_INVERSE_MAP对输入图像进行变换,以获得输出图像。
需要注意的是,参数WARP_INVERSE_MAP的作用是告诉函数我们使用的是仿射变换的逆变换,这样可以加速运算。
阅读全文