OpenCV教程-OpenCV调整图像大小
整理:python技术迷
有时,转换加载的图像是必要的。在图像处理中,我们需要调整图像的大小以执行特定操作。图像通常存储在Numpy ndarray(数组)中。使用 ndarray.shape 可以获取图像的维度。我们可以通过使用维度变量的索引位置获取每个像素的宽度、高度和通道数。
示例:1
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)scale = 60width = int(img.shape[1] * scale / 100)height = int(img.shape[0] * scale / 100)dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
Resized Dimensions : (199, 300, 3)
cv2.resize(src, dsize[, dst[, fx[,fy[,interpolation]]])
参数:
src - 输入图像(必需)。
dsize - 输出图像的期望大小(必需)。
fx - 沿水平轴的比例因子(可选)。
fy - 沿垂直轴的比例因子。
插值(可选)-此标志使用以下方法:
INTER_NEAREST - 最近邻插值 INTER_AREA - 使用像素面积关系重新采样。当我们尝试进行图像缩放时,它类似于INTER_NEAREST方法。
INTER_CUBIC - 在4×4像素邻域上的双三次插值。
INTER_LANCOZS4 - 在8×8像素邻域上的Lanczos插值。
👉点击领取:最全Python资料合集
调整图像大小的示例
有多种方法可以调整图像的大小。以下是执行调整操作的一些示例:
1.保留纵横比(保持图像的高宽比)
缩小(减小图像的大小)
放大(增加图像的大小)
2.不保留纵横比
仅调整宽度
仅调整高度
3.调整指定的宽度和高度
保留纵横比
使用 resize() 进行缩小
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)scale = 60 # percent of original sizewidth = int(img.shape[1] * scale / 100)height = int(img.shape[0] * scale / 100)dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
Original Dimensions : (332, 500, 3)Resized Dimensions : (199, 300, 3)
在上面的示例中,scale_per 变量保存了需要缩放的图像百分比。使用此值与原始图像的维度一起,计算输出图像的宽度和高度。
使用 resize() 进行放大
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)scale = 150 # percent of original sizewidth = int(img.shape[1] * scale / 100)height = int(img.shape[0] * scale / 100)dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
Original Dimensions : (332, 500, 3)Resized Dimensions : (398, 600, 3)
不保留纵横比
仅调整宽度
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', cv2.IMREAD_UNCHANGED)print('Original Dimensions : ', img.shape)width = img.shape[1] # keep original widthheight = 440dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
Original Dimensions : (332, 500, 3)Resized Dimensions : (440, 500, 3)
仅调整高度
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)width = img.shape[1] # keep original widthheight = 200dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
Original Dimensions : (332, 500, 3)Resized Dimensions : (200, 500, 3)
调整指定的宽度和高度
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)width = 350height = 450dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出:
热门推荐