飞道的博客

OpenCV 图像旋转、平移、缩放

340人阅读  评论(0)

        本文是 OpenCV图像视觉入门之路的第7篇文章,本文详细的进行了图像的缩放 cv2.resize()、旋转 cv2.flip()、平移 cv2.warpAffine()等操作。

OpenCV 图像旋转、平移、缩放目录

1 缩放图片

2 翻转图片

2.1 垂直翻转

2.2 水平翻转

2.3 水平垂直翻转

​编辑

3 平移图片


1 缩放图片

缩放就是调整图片的大小,使用cv2.resize()函数实现缩放,可以按照比例缩放,也可以按照指定的大小缩放:
也可以指定缩放方法为线性插值INTER_LINEAR。

放过程中有五种插值方式:

  • cv2.INTER_NEAREST 最近邻插值
  • cv2.INTER_LINEAR 线性插值
  • cv2.INTER_AREA 基于局部像素的重采样,区域插值
  • cv2.INTER_CUBIC 基于邻域4x4像素的三次插值
  • cv2.INTER_LANCZOS4 基于8x8像素邻域的Lanczos插值

  
  1. import cv2
  2. from PIL import Image
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. # 按间距中的绿色按钮以运行脚本。
  6. if __name__ == '__main__':
  7. image = cv2.imread( 'D:/Jupyter_Notebooks/0.jpg')
  8. # 从RGB色彩空间转换到HSV色彩空间
  9. hsv = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  10. # 按照指定的宽度、高度缩放图片
  11. res = cv2.resize(image, ( 960, 540))
  12. # 按照比例缩放,如x,y轴均放大一倍
  13. res2 = cv2.resize(image, None, fx= 2, fy= 2, interpolation=cv2.INTER_LINEAR)
  14. cv2.imshow( "image", image)
  15. cv2.imshow( "res2", res2)
  16. cv2.waitKey( 0)
  17. cv2.destroyAllWindows()

2 翻转图片

镜像翻转图片,可以用cv2.flip()函数:
其中,参数2 = 0:垂直翻转(沿x轴),参数2 > 0: 水平翻转(沿y轴),参数2 < 0: 水平垂直翻转。


  
  1. import cv2
  2. from PIL import Image
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. # 按间距中的绿色按钮以运行脚本。
  6. if __name__ == '__main__':
  7. image = cv2.imread( 'D:/Jupyter_Notebooks/0.jpg')
  8. # 从RGB色彩空间转换到HSV色彩空间
  9. # image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  10. dst = cv2.flip(image, 0)
  11. cv2.imshow( "image", image)
  12. cv2.imshow( "res2", dst)
  13. cv2.waitKey( 0)
  14. cv2.destroyAllWindows()

2.1 垂直翻转

dst = cv2.flip(image, 0

2.2 水平翻转

dst = cv2.flip(image, 1

2.3 水平垂直翻转

dst = cv2.flip(image, -1)  

3 平移图片

要平移图片,我们需要定义下面这样一个矩阵,tx,ty是向x和y方向平移的距离:

 平移是用仿射变换函数cv2.warpAffine()实现的:


  
  1. import cv2
  2. from PIL import Image
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. # 按间距中的绿色按钮以运行脚本。
  6. if __name__ == '__main__':
  7. image = cv2. imread( 'D:/Jupyter_Notebooks/0.jpg')
  8. # 获得图片的高、宽
  9. rows, cols = image.shape[: 2]
  10. # 定义平移矩阵,需要是numpy的float32类型 x轴平移 100,y轴平移 500
  11. M = np. float32([[ 1, 0, 100], [ 0, 1, 200]])
  12. # 用仿射变换实现平移
  13. dst = cv2. warpAffine(image, M, (cols, rows))
  14. # cv2. imshow( "image", image)
  15. cv2. imshow( "res2", dst)
  16. cv2. waitKey( 0)
  17. cv2. destroyAllWindows()

 


转载:https://blog.csdn.net/qq_37529913/article/details/128451093
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场