Python----计算机视觉处理(Opencv:图像缩放)

发布于:2025-03-19 ⋅ 阅读:(23) ⋅ 点赞:(0)

图像缩放 

        与图像旋转里的缩放的原理一样,图像缩放的原理也是根据需要将原图像的像素数量增加或减少,并通 过插值算法来计算新像素的像素值。

导入模块

import cv2

输入图像

img=cv2.imread('lena.png')

图像缩放

img_size=cv2.resize(img,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)

 或

img_size=cv2.resize(img,(200,200),interpolation=cv2.INTER_LINEAR)

输出图像

cv2.imshow('img_resize',img_size)
cv2.waitKey(0)

完整代码

import cv2

img=cv2.imread('lena.png')

# dsize和fx、fy不能同时使用,如果同时出现,会以dsize的标准进行缩放
# 如果想要使用resize函数,就必须填入两个参数:src和dsize
# 如果不想使用dsize,赋为None就行。
img_size=cv2.resize(img,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)

cv2.imshow('img_resize',img_size)
cv2.waitKey(0)

库函数 

resize()

	cv.resize(	src, dsize[, dst[, fx[, fy[, interpolation]]]]	) ->	dst
方法 描述
src 输入图像
dst 输出图像
dsize 输出图像;它具有大小 dsize(当它不为零时)或从 src.size() 、fx 和 fy 计算的大小;DST 的类型与 src 的类型相同。
fx

沿水平轴的比例因子;当它等于 0 时,它被计算为

fy

沿纵轴的比例因子;当它等于 0 时,它被计算为

interpolation 插值方法参见 InterpolationFlags
flags 插值方法
INTER_NEAREST

Python:cv.INTER_NEAREST

最近邻插值

INTER_LINEAR

Python:cv.INTER_LINEAR

双线性插值

INTER_CUBIC

Python:cv.INTER_CUBIC

双三次插值

INTER_AREA

Python:cv.INTER_AREA

使用像素区域关系重新采样。这可能是图像抽取的首选方法,因为它可以获得无摩尔纹的结果。但是当图像缩放时,它类似于 INTER_NEAREST 方法。

INTER_LANCZOS4

Python:cv.INTER_LANCZOS4

8x8 邻域上的 Lanczos 插值

INTER_LINEAR_EXACT

Python:cv.INTER_LINEAR_EXACT

位精确双线性插值

INTER_NEAREST_EXACT

Python:cv.INTER_NEAREST_EXACT

位精确最近邻插值。这将产生与 PIL 、 scikit-image 或 Matlab 中的最近邻方法相同的结果。

INTER_MAX

Python:cv.INTER_MAX

插值代码的掩码

WARP_FILL_OUTLIERS

Python:cv.WARP_FILL_OUTLIERS

标志,填充所有目标图像像素。如果其中一些对应于源图像中的异常值,则它们将设置为零

WARP_INVERSE_MAP

Python:cv.WARP_INVERSE_MAP

标志, 逆变换

例如,linearPolar 或 logPolar 变换:

  • flag 未设置:dst(ρ,φ)=src(x,y)
  • flag 的dst(x,y)=src(ρ,φ)
WARP_RELATIVE_MAP

Python:cv.WARP_RELATIVE_MAP