计算机系统应用教程网站

网站首页 > 技术文章 正文

OpenCV-Python|扩展缩放与几种插值方法比较

btikc 2024-10-12 10:15:54 技术文章 12 ℃ 0 评论

知识点

图像插值(Image Interpolation)

最常见四种插值算法

INTER_NEAREST=0

INTER_LINEAR=1

INTER_CUBIC=2

INTER_LANCZ0S4=4

相关的应用场景

几何变换、透视变换、插值计算新像素

resize,如果size有值,使用size做放缩插值,否则根据fx与fy卷积

扩展与缩放

扩展缩放只是改变图像的尺寸大小。

OpenCV 提供的函数cv2.resize()可以实现这个功能。图像的尺寸可以自己手动设置,你也可以指定缩放因子。我们可以选择使用不同的插值方法。在缩放时我们推荐使用cv2.INTER_AREA,在扩展时我们推荐使用v2.INTER_CUBIC(慢) 和v2.INTER_LINEAR默认情况下所有改变图像尺寸大小的操作使用的插值方法都是cv2.INTER_LINEAR。你可以使用下面任意一种方法改变图像的尺寸:

import cv2 as cv

src = cv.imread("../code_014/HappyFish.jpg")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

h, w = src.shape[:2]  #读取图像的高宽
print(h, w) #打印显示
# 图像的插值缩放  fx,fy是指缩放因子
# 插值算法:
# interpolation : INTER_NEAREST(最近邻插值)
dst = cv.resize(src, (w*2, h*2), fx=0.75, fy=0.75, interpolation=cv.INTER_NEAREST)
cv.imshow("INTER_NEAREST", dst)
#interpolation: INTER_LINEAR (双线性插值)
dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_LINEAR)
cv.imshow("INTER_LINEAR", dst)
#interpolation : INTER_CUBIC (三次样条插值:4*4像素邻域内的双立方插值)
dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_CUBIC)
cv.imshow("INTER_CUBIC", dst)
#interpolation: INTER_LANCZOS4 (8*8像素邻域内的Lanczos)
dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_LANCZOS4)
cv.imshow("INTER_LANCZOS4", dst)
#INTERPOLATION : INTER_AREA (区域插值)
dst = cv.resize(src, (w*2, h*2), interpolation=cv.INTER_AREA)
cv.imshow("INTER_AREA", dst)

cv.waitKey(0)
cv.destroyAllWindows()








关于这几种插值算法的详细代码实现与解释

https://blog.csdn.net/jia20003/article/details/40020775

https://blog.csdn.net/jia20003/article/details/6919845

https://blog.csdn.net/jia20003/article/details/6915185

https://blog.csdn.net/jia20003/article/details/17856859

https://blog.csdn.net/guyuealian/article/details/85097633

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

欢迎 发表评论:

最近发表
标签列表