三、图像缩放、翻转

旧城等待, 2023-06-13 11:11 100阅读 0赞

1、图像缩放

  1. resize(InputArray src, OutputArray dst, Size dsize, double fx=0,
  2. double fy=0, int interpolation=INTER_LINEAR )

参数说明:

(1)src - 原图

(2)dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同

(3)dsize - 目标图像大小。指定方式(列大小,行大小),注意顺序

当dsize为0时,它可以通过以下公式计算得出:

format_png

所以,参数dsize和参数(fx, fy)不能够同时为0

(4)fx - 水平轴上的比例因子(即可以计算出列数)。当它为0时,计算公式如下:

format_png 1

(5)fy - 垂直轴上的比例因子(即可以计算出行数)。当它为0时,计算公式如下:

format_png 2

(5)interpolation - 插值方法。共有5种:

1)INTER_NEAREST - 最近邻插值法

2)INTER_LINEAR - 双线性插值法(默认)

3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。

4)INTER_CUBIC - 基于4x4像素邻域的3次插值法

5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

  1. # encoding: utf-8
  2. import cv2
  3. import matplotlib.pyplot as plt
  4. import math
  5. import copy
  6. import numpy as np
  7. def show_img(img):
  8. plt.figure()
  9. plt.imshow(img)
  10. plt.show()
  11. path1 = r"lena.jpg"
  12. img1 = cv2.imread(path1)
  13. show_img(img1)
  14. # 1
  15. img2 = cv2.resize(img1,(200,100))
  16. show_img(img2)
  17. # 2
  18. rows,cols,chn = img1.shape
  19. size3 = (round(cols * 0.5),round(rows * 1.5) )#
  20. img3 = cv2.resize(img1,size3)
  21. show_img(img3)
  22. # 3
  23. fx = 0.5#水平方向变成原来0.5倍
  24. fy = 1.3#竖直方向变成原来1.3倍
  25. img4 = cv2.resize(img1,dsize=None,fx=fx,fy=fy)
  26. show_img(img4)

2、图像翻转

  1. flip(src, flipCode[, dst])

参数:






















flipCode Anno
1 水平翻转,指以Y轴为中间线,左右翻转
0 垂直翻转,指以X轴为中间线,上下翻转
-1 水平垂直翻转,指先以Y轴为中间线,左右翻转,再以X轴为中间线,上下翻转

原图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3MyOTQ4NzgzMDQ_size_16_color_FFFFFF_t_70

(1)水平翻转

水平翻转,指以Y轴为中间线,左右翻转

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3MyOTQ4NzgzMDQ_size_16_color_FFFFFF_t_70 1

  1. # encoding: utf-8
  2. import cv2
  3. import matplotlib.pyplot as plt
  4. import math
  5. import copy
  6. import numpy as np
  7. def show_img(img):
  8. plt.figure()
  9. plt.imshow(img)
  10. plt.show()
  11. path1 = r"lena.jpg"
  12. img1 = cv2.imread(path1)
  13. show_img(img1)
  14. # 1、水平翻转
  15. img2 = cv2.flip(img1,1)
  16. show_img(img2)

(2)垂直翻转

垂直翻转,指以X轴为中间线,上下翻转

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3MyOTQ4NzgzMDQ_size_16_color_FFFFFF_t_70 2

  1. # encoding: utf-8
  2. import cv2
  3. import matplotlib.pyplot as plt
  4. import math
  5. import copy
  6. import numpy as np
  7. def show_img(img):
  8. plt.figure()
  9. plt.imshow(img)
  10. plt.show()
  11. path1 = r"lena.jpg"
  12. img1 = cv2.imread(path1)
  13. show_img(img1)
  14. # 1、水平翻转
  15. img2 = cv2.flip(img1,0)
  16. show_img(img2)

(3)水平垂直翻转

水平垂直翻转,指先以Y轴为中间线,左右翻转,再以X轴为中间线,上下翻转

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3MyOTQ4NzgzMDQ_size_16_color_FFFFFF_t_70 3

  1. # encoding: utf-8
  2. import cv2
  3. import matplotlib.pyplot as plt
  4. import math
  5. import copy
  6. import numpy as np
  7. def show_img(img):
  8. plt.figure()
  9. plt.imshow(img)
  10. plt.show()
  11. path1 = r"lena.jpg"
  12. img1 = cv2.imread(path1)
  13. show_img(img1)
  14. # 1、水平翻转
  15. img2 = cv2.flip(img1,-1)
  16. show_img(img2)

发表评论

表情:
评论列表 (有 0 条评论,100人围观)

还没有评论,来说两句吧...

相关阅读

    相关 图像算法

    怎样计算缩放比例? 有四种方法:1.对角线法,以对角线长度为准,其伸长者为放大,缩短者为缩小,其底边并行线即为新尺寸。2.计算器法,先输入欲缩放宽度,按除键,再输入原稿尺

    相关 OpenCV 几何变换-图像

    图像的缩放主要用于改变图像的大小,缩放后图像的图像的宽度和高度会发生变化。在图像处理中是一种很基础的几何变换,但是具有很重要的作用,比如:当输入图片尺寸过大时,处理速度会很慢,