利用resize+pyrDown+pyrUp改变图片大小,学习OpenCV

resize()

对原始图像使用resize(),调整大小,要求按照比例进行缩放,缩小为1/2大小

#hello openCV
import cv2

#显示原图
img = cv2.imread('1/lena512color.tiff')  #opencv路径不能是中文路径
# img = cv2.imread('1/answer1.png')   #这里选择了一个长宽不一样的图进行宽度、长度等参数的调整试验
cv2.imshow('resourceImg', img)

#对原始图像使用resize()
img2 = cv2.resize(img, (int(img.shape[1]/2),int(img.shape[0]/2)), interpolation=cv2.INTER_CUBIC)
#height,width = img.shape[:2]
#img.shape[:2] 取彩色图片的长、宽,如果img.shape[:3] 取取彩色图片的长、宽、通道
#L[a:b]  L这个列表,从a这个位置开始去,取到b-1为止
# img.shape[0]:图像的垂直尺寸(高度)
# img.shape[1]:图像的水平尺寸(宽度)
# img.shape[2]:图像的通道数
# 在矩阵使用shape的话,[0]就表示行数,[1]则表示列数。
cv2.imshow('resizeImg', img2)
cv2.waitKey()
cv2.destroyAllWindows()

#图片改变大小
#python dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])

参数:

  • src 原始图像
  • dsize 目标图像大小。当dsize为0时,它可以通过以下公式计算得出:dsize = Size(round(fxsrc.cols), round(fysrc.rows))所以,参数dsize和参数(fx, fy)不能够同时为0
  • dst 当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同
  • fx 水平轴上的比例因子。当它为0时,计算公式如下:(double)dsize.width/src.cols
  • fy 垂直轴上的比例因子。当它为0时,计算公式如下:(double)dsize.height/src.rows
  • interpolation 像素外插策略
    • 插值方法。共有5种:
    1. INTER_NEAREST - 最近邻插值法
    1. INTER_LINEAR - 双线性插值法(默认)
    1. INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
    1. INTER_CUBIC - 基于4x4像素邻域的3次插值法
    1. INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

pyrDown+pyrUp


#hello openCV
import cv2

#显示原图
img = cv2.imread('1/lena512color.tiff')  #opencv路径不能是中文路径
# img = cv2.imread('1/answer1.png')   #这里选择了一个长宽不一样的图进行宽度、长度等参数的调整试验
cv2.imshow('resourceImg', img)

#对原始图像进行pyrUp和pyrDown的处理
img3=cv2.pyrDown(img)
img4 = cv2.pyrUp(img)
cv2.imshow('pyrDown', img3)
cv2.imshow('pyrUp', img4)

cv2.waitKey()
cv2.destroyAllWindows()

参数:

  • pyrDown()先对图像进行高斯平滑,然后再进行降采样(将图像尺寸行和列方向缩减一半)
  • pyrUp()先对图像进行高斯平滑,然后再进行降采样(将图像尺寸行和列方向放大一倍)

完整代码+效果对比


#hello openCV
import cv2

#显示原图
img = cv2.imread('1/lena512color.tiff')  #opencv路径不能是中文路径
# img = cv2.imread('1/answer1.png')   #这里选择了一个长宽不一样的图进行宽度、长度等参数的调整试验

#对原始图像进行resize()处理
cv2.imshow('resourceImg', img)
img2 = cv2.resize(img, (int(img.shape[1]/2),int(img.shape[0]/2)), interpolation=cv2.INTER_CUBIC)
cv2.imshow('resizeImg', img2)

#对原始图像进行pyrUp和pyrDown的处理
img3=cv2.pyrDown(img)
img4 = cv2.pyrUp(img)
cv2.imshow('pyrDown', img3)
cv2.imshow('pyrUp', img4)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值