【OpenCV学习笔记4】基础:几何变换-改变大小

计算机视觉 专栏收录该内容
5 篇文章 0 订阅

1. 按比例缩小

我们使用 resize 函数改变图像大小,例如将图像按比例缩小为原来的80%:

import cv2

img = cv2.imread('images/test.jpg')

width = img.shape[1]
height = img.shape[0]

scale = 80
newHeight = int(height * 80 / 100)
newWidth = int(width * 80 / 100)

imgResized = cv2.resize(img, (newWidth, newHeight))
cv2.imshow('Resized', imgResized)
cv2.waitKey(0)

在这里插入图片描述

resize 函数第一个参数是原图像,第二个参数是高和宽组成的 tuple。

2. 放大

我们还可以对图像进行放大:

import cv2

img = cv2.imread('images/test.jpg')

width = img.shape[1]
height = img.shape[0]

scale = 120
newHeight = int(height * scale / 100)
newWidth = int(width * scale / 100)

imgResized = cv2.resize(img, (newWidth, newHeight), interpolation=cv2.INTER_AREA)
cv2.imshow('Upscale', imgResized)
cv2.waitKey(0)

在这里插入图片描述

这里在调用 resize 函数时指定了一个参数 interpolation ,也就是指定 resize 函数的插值方式,有如下几种:

  • INTER_NEAREST – a nearest-neighbor interpolation(最邻近插值)
  • INTER_LINEAR – a bilinear interpolation(双线性插值,这是默认的方法)
  • INTER_AREA – resampling using pixel area relation(基于局部像素的重采样)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
  • INTER_CUBIC – a bicubic interpolation over 4×4 pixel neighborhood(4x4 双三次插值法)
  • INTER_LANCZOS4 – a Lanczos interpolation over 8×8 pixel neighborhood(8x8 多相位图像插值法)

3. 只更改高或宽

可以只更改高或宽,例如只更改高度,采用 INTER_AREA 插值:

import cv2

img = cv2.imread('images/test.jpg')

width = img.shape[1]
height = img.shape[0]

scale = 80
newHeight = int(height * scale / 100)

imgResized = cv2.resize(img, (width, newHeight), interpolation=cv2.INTER_AREA)
cv2.imshow('Resize Height', imgResized)
cv2.waitKey(0)

在这里插入图片描述

4. 缩放到指定大小

可以直接指定大小(像素值),如 300x100:

import cv2

img = cv2.imread('images/test.jpg')

imgResized = cv2.resize(img, (300, 100), interpolation=cv2.INTER_AREA)
cv2.imshow('Resize Specific', imgResized)
cv2.waitKey(0)

在这里插入图片描述


References

  1. OpenCV Doc: Geometric Image Transformations
  2. OpenCV里的INTER_AREA究竟是在做啥?
  3. OpenCV Python – Resize image

QQ交流群:点击链接加入群聊【Python练习生】532232743
我的知乎:AXin啊
公众号:请叫我AXin
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值