图像处理基础Task1:图像插值算法

Task1:图像插值算法

学习自:https://github.com/datawhalechina/team-learning/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E5%9F%BA%E7%A1%80%EF%BC%9A%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86%EF%BC%88%E4%B8%8A%EF%BC%89/Task01%20%E5%9B%BE%E5%83%8F%E6%8F%92%E5%80%BC%E7%AE%97%E6%B3%95.md

  1. 插值算法原理介绍

    • 最近邻插值算法
    • 双线性插值算法
  2. OpenCV代码实践

    • cv.resize()各项参数及含义

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

参数:

参数描述
src【必需】原图像
dsize【必需】输出图像所需大小
fx【可选】沿水平轴的比例因子
fy【可选】沿垂直轴的比例因子
interpolation【可选】插值方式

插值方式:

interpolation
cv.INTER_NEAREST最近邻插值
cv.INTER_LINEAR双线性插值
cv.INTER_CUBIC基于4x4像素邻域的3次插值法
cv.INTER_AREA基于局部像素的重采样

通常,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。默认情况下,所有的放缩都使用cv.INTER_LINEAR。

3. 动手实现
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('2010_005480.jpg', cv2.IMREAD_UNCHANGED)

print('Original Dimensions : ',img.shape)

scale_percent = 30       # percent of original size
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_LINEAR)

fx = 1.5
fy = 1.5

resized1 = cv2.resize(resized, dsize=None, fx=fx, fy=fy, interpolation = cv2.INTER_NEAREST)

resized2 = cv2.resize(resized, dsize=None, fx=fx, fy=fy, interpolation = cv2.INTER_LINEAR)
print('Resized Dimensions : ',resized.shape)


# cv.imread 读取的是BGR,plt.imshoe的是RGB格式
# 进行转换
resized_c = resized[:,:,[2,1,0]]
resized1_c = resized1[:,:,[2,1,0]] 
resized2_c = resized2[:,:,[2,1,0]] 

# plt.figure(figsize=(15, 18))
plt.imshow(resized_c)
plt.title('Resized image')

plt.show()

Original Dimensions :  (375, 500, 3)
Resized Dimensions :  (112, 150, 3)

在这里插入图片描述

plt.imshow( resized1_c)
plt.title('INTER_NEAREST image')
plt.show()

在这里插入图片描述

plt.imshow(resized2_c)
plt.title('INTER_LINEAR image')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值