专业的编程技术博客社区

网站首页 > 博客文章 正文

OpenCV学习之路-30. 图像的缩放(opencv修改图像尺寸)

baijin 2024-08-31 16:16:13 博客文章 4 ℃ 0 评论

缩放只是调整图像的大小。

OpenCV 提供了 cv2.resize 函数,实现图像的缩放和大小变换 。

函数说明:

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst

参数说明:

  • scr:变换操作的输入图像
  • dsize: 输出图像的大小,二元元组 (width, height)
  • dst:变换操作的输出图像,可选项
  • fx, fy:x 轴、y 轴上的缩放比例,实型,可选项
  • interpolation:插值方法,整型,可选项

cv2.INTER_LINEAR:双线性插值(默认方法)

cv2.INTER_AREA:使用像素区域关系重采样,缩小图像时可以避免波纹出现

cv2.INTER_NEAREST:最近邻插值

cv2.INTER_CUBIC:4x4 像素邻域的双三次插值

cv2.INTER_LANCZOS4:8x8 像素邻域的Lanczos插值

  • 返回值:dst,变换操作的输出图像,ndarray 多维数组

注意事项:

图像缩放可以通过 dsize 直接设定输出图像的大小,也可以通过 dx, dy 设置图像缩放的比例(dsize 设为 None)。

也可以通过构造缩放变换矩阵 MAZ,由函数 cv2.warpAffine 计算变换后的缩放平移图像。缩放变换矩阵 MAZ 由以下公式描述:



由偏移量 (Tx, Ty) 按上式构造平移变换矩阵 MAT,由函数 cv2.warpAffine 可以计算变换后的平移图像。

基本例程:1.39 图像的缩放变换

# 1.39 图像的缩放
img = cv2.imread("../images/Fractal08.png") # 读取彩色图像(BGR)
height, width = img.shape[:2] # 图片的高度和宽度
imgZoom1 = cv2.resize(img, (int(0.75*width), int(height)))
imgZoom2 = cv2.resize(img, None, fx=0.75, fy=1.0, interpolation=cv2.INTER_AREA)
plt.figure(figsize=(8,6))
plt.subplot(121), plt.axis('off'), plt.title("Zoom: 0.75*W,1.0*H")
plt.imshow(cv2.cvtColor(imgZoom1, cv2.COLOR_BGR2RGB))
plt.subplot(122), plt.axis('off'), plt.title("Zoom: fx=0.75,fy=1.0")
plt.imshow(cv2.cvtColor(imgZoom2, cv2.COLOR_BGR2RGB))
plt.show()

(本节完)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表