首页 > 编程笔记 > Python笔记 阅读:2

OpenCV resize()实现图片缩放(附带实例)

图像按比例缩放是指将给定的图像在 x 轴方向按比例缩放 fx 倍,在 y 轴方向按比例缩放 fy 倍,从而获得一幅新的图像:
在 OpenCV 中,实现图像缩放的函数是 resize(),该函数声明如下:
resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst
各个参数的含义如下:

注意,参数 dsize、fx 和 fy 不能同时为 0。


【实例】实现图像的缩放。
import numpy as np
import cv2

def resizeImage(image,width=None,height=None,inter=cv2.INTER_AREA):
    newsize = (width,height)
    #获取图像尺寸
    (h,w) = image.shape[:2]
    if width is None and height is None:
        return image
    #高度算缩放比例
    if width is None:
        n = height/float(h)
        newsize = (int(n*w),height)
    else :
        n = width/float(w)
        newsize = (width,int(h*n))
    # 缩放图像
    newimage = cv2.resize(image, newsize, interpolation=inter)
    return newimage

imageOriginal = cv2.imread("lakeWater.jpg")
cv2.imshow("Original", imageOriginal)
#获取图像尺寸
w = width=imageOriginal.shape[1]
h = width=imageOriginal.shape[2]
print ("Image size:",w,h)
#放大2倍
newimage = resizeImage(imageOriginal,w*2,h*2,cv2.INTER_LINEAR)
cv2.imshow("New", newimage)
#保存缩放后的图像
cv2.imwrite('newimage.jpg',newimage)
#缩小为原来的1/5
newimage2 = resizeImage(imageOriginal,int(w/5),int(h/5),cv2.INTER_LINEAR)
cv2.imwrite('newimage2.jpg',newimage2)
在上述代码中,首先显示了原图,然后利用 resize() 函数对图像分别进行放大 2 倍和缩小为原来的 1/5 的处理。

运行工程,结果如下图所示:

相关文章