当前位置:   article > 正文

opencv透视变换函数,通过输入4个角点坐标实现透视变换_不规则图形的透视变换四个点怎么确定

不规则图形的透视变换四个点怎么确定

需要头文件

 

  1. #include "core/core.hpp"
  2. #include "highgui/highgui.hpp"
  3. #include "imgproc/imgproc.hpp"
  1. //
  2. //函数功能:图片透视变换
  3. //输入: Mat src原图像 ,int p1x/y p2x/y p3x/y p4x/y对应左上,右上、左下、右下四个点的x\y坐标 ,
  4. //输入: int width,int height分别指转换后的图像宽、高
  5. //输出: 透视变换后的图像
  6. //
  7. Mat transformmat(Mat src,int p1x,int p1y,int p2x,int p2y,int p3x,int p3y,int p4x, int p4y,int width,int height)
  8. {
  9. Mat result;
  10. Point2f srcTri[4], dstTri[4];
  11. dstTri[0].x = 0;
  12. dstTri[0].y = 0;
  13. dstTri[1].x = width;
  14. dstTri[1].y = 0;
  15. dstTri[2].x = 0;
  16. dstTri[2].y = height;
  17. dstTri[3].x = width;
  18. dstTri[3].y = height;
  19. srcTri[0].x = p1x;
  20. srcTri[0].y = p1y;
  21. srcTri[1].x = p2x;
  22. srcTri[1].y = p2y;
  23. srcTri[2].x = p3x;
  24. srcTri[2].y = p3y;
  25. srcTri[3].x = p4x;
  26. srcTri[3].y = p4y;
  27. Mat transform = Mat::zeros(3, 3, CV_32FC1); //透视变换矩阵
  28. transform = getPerspectiveTransform(srcTri, dstTri); //获取透视变换矩阵
  29. warpPerspective(src, result, transform, Size(height+1,width+1)); //透视变换
  30. return result;
  31. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号