1.放缩变换

  1. #include <opencv2\opencv.hpp>
  2. #include <iostream>
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. Mat gray = imread("lena.png", IMREAD_GRAYSCALE);
  8. if (gray.empty())
  9. {
  10. cout << "请确认图像文件名称是否正确" << endl;
  11. return -1;
  12. }
  13. Mat smallImg, bigImg0, bigImg1, bigImg2;
  14. resize(gray, smallImg, Size(15, 15), 0, 0, INTER_AREA); //先将图像缩小
  15. resize(smallImg, bigImg0, Size(30, 30), 0, 0, INTER_NEAREST); //最近邻差值
  16. resize(smallImg, bigImg1, Size(30, 30), 0, 0, INTER_LINEAR); //双线性差值
  17. resize(smallImg, bigImg2, Size(30, 30), 0, 0, INTER_CUBIC); //双三次差值
  18. namedWindow("smallImg", WINDOW_NORMAL); //图像尺寸太小,一定要设置可以调节窗口大小标志
  19. imshow("smallImg", smallImg);
  20. namedWindow("bigImg0", WINDOW_NORMAL);
  21. imshow("bigImg0", bigImg0);
  22. namedWindow("bigImg1", WINDOW_NORMAL);
  23. imshow("bigImg1", bigImg1);
  24. namedWindow("bigImg2", WINDOW_NORMAL);
  25. imshow("bigImg2", bigImg2);
  26. waitKey(0);
  27. return 0;
  28. }

图3-21.png

2.翻转变换

  1. #include <opencv2\opencv.hpp>
  2. #include <iostream>
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. Mat img = imread("lena.png");
  8. if (img.empty())
  9. {
  10. cout << "请确认图像文件名称是否正确" << endl;
  11. return -1;
  12. }
  13. Mat img_x, img_y, img_xy;
  14. flip(img, img_x, 0); //沿x轴对称
  15. flip(img, img_y, 1); //沿y轴对称
  16. flip(img, img_xy, -1); //先x轴对称,再y轴对称
  17. imshow("img", img);
  18. imshow("img_x", img_x);
  19. imshow("img_y", img_y);
  20. imshow("img_xy", img_xy);
  21. waitKey(0);
  22. return 0;
  23. }

图3-22.png

3.仿射变换

4.透视变换