OpenCV图像几何变换——转置,镜像,倒置

前端之家收集整理的这篇文章主要介绍了OpenCV图像几何变换——转置,镜像,倒置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

图像几何变换方法之——remap使用。

源图像


一、图像转置

  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);
  8. imshow("src",src);
  9. Mat dst;
  10. dst.create( src.size(),src.type());
  11. Mat map_x;
  12. Mat map_y;
  13. map_x.create( src.size(),CV_32FC1);
  14. map_y.create( src.size(),CV_32FC1);
  15. for( int i = 0; i < src.rows; ++i)
  16. {
  17. for( int j = 0; j < src.cols; ++j)
  18. {
  19. map_x.at<float>(i,j) = (float) i;//j;//(src.cols - j) ;
  20. map_y.at<float>(i,j) = (float) j;//(src.rows - i) ;
  21. }
  22. }
  23. remap(src,dst,map_x,map_y,CV_INTER_LINEAR);
  24. imshow("dst",dst);
  25. imwrite("invert3.jpg",dst);
  26. waitKey(0);
  27. system("pause");
  28. return 0;
  29. }
结果:


二、图像倒置

  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. Mat src = imread("lena.jpg",j) = (float) j;//j;//(src.cols - j) ;
  8. map_y.at<float>(i,j) = (float) (src.rows - i) ;
  9. }
  10. }
  11. remap(src,dst);
  12. imwrite("invert.jpg",dst);
  13. waitKey(0);
  14. system("pause");
  15. return 0;
  16. }
结果:


三、图像水平镜像

  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. Mat src = imread("lena.jpg",j) = (float) (src.cols - j) ;
  8. map_y.at<float>(i,j) = (float) i;//(src.rows - i) ;
  9. }
  10. }
  11. remap(src,dst);
  12. imwrite("invert2.jpg",dst);
  13. waitKey(0);
  14. system("pause");
  15. return 0;
  16. }
结果:



四、水平镜像倒置

  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. Mat src = imread("lena.jpg",dst);
  8. waitKey(0);
  9. system("pause");
  10. return 0;
  11. }
结果:

猜你在找的设计模式相关文章