三、图像缩放、翻转
1、图像缩放
resize(InputArray src, OutputArray dst, Size dsize, double fx=0,
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时,它可以通过以下公式计算得出:
所以,参数dsize和参数(fx, fy)不能够同时为0
(4)fx - 水平轴上的比例因子(即可以计算出列数)。当它为0时,计算公式如下:
(5)fy - 垂直轴上的比例因子(即可以计算出行数)。当它为0时,计算公式如下:
(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插值
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)
# 1
img2 = cv2.resize(img1,(200,100))
show_img(img2)
# 2
rows,cols,chn = img1.shape
size3 = (round(cols * 0.5),round(rows * 1.5) )#
img3 = cv2.resize(img1,size3)
show_img(img3)
# 3
fx = 0.5#水平方向变成原来0.5倍
fy = 1.3#竖直方向变成原来1.3倍
img4 = cv2.resize(img1,dsize=None,fx=fx,fy=fy)
show_img(img4)
2、图像翻转
flip(src, flipCode[, dst])
参数:
flipCode | Anno |
---|---|
1 | 水平翻转,指以Y轴为中间线,左右翻转 |
0 | 垂直翻转,指以X轴为中间线,上下翻转 |
-1 | 水平垂直翻转,指先以Y轴为中间线,左右翻转,再以X轴为中间线,上下翻转 |
原图:
(1)水平翻转
水平翻转,指以Y轴为中间线,左右翻转
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)
# 1、水平翻转
img2 = cv2.flip(img1,1)
show_img(img2)
(2)垂直翻转
垂直翻转,指以X轴为中间线,上下翻转
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)
# 1、水平翻转
img2 = cv2.flip(img1,0)
show_img(img2)
(3)水平垂直翻转
水平垂直翻转,指先以Y轴为中间线,左右翻转,再以X轴为中间线,上下翻转
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)
# 1、水平翻转
img2 = cv2.flip(img1,-1)
show_img(img2)
还没有评论,来说两句吧...