图像基础9 插值与缩放

来源:互联网 发布:农村淘宝地址怎么改 编辑:程序博客网 时间:2024/05/18 05:44

学习资源:《机器学习实践指南 案例应用解析 第2版》

resize函数

通过OpenCV的resize函数可实现插值与缩放。

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );  

参数说明:
- src 输入,原图像
- dst 输出,目标图像
- dsize 输出图像的大小,如果这个参数不为0,表示把原图像缩放到Size(width, height)指定的大小;如果为0 , 原图像缩放之后的大小要通过下面公式计算:

dsize = Size(round(fx*src.cols),round(fy*src.rows))
  • fx width方向的缩放比例,如果为0,就是按照(double)dsize.width/src.cols来计算
  • fy height方向的缩放比例,如果为0,会按(double)dsize.height/src.rows来计算
  • interpolation 插值的方式,有:
    • INTERNEAREST 最邻近插值
    • INTER_LINEAR 双线性插值
    • INTER_AREA 像素关系重采样
    • INTER_CUBIC 4*4像素领域内的双立方插值
    • INTER_LANCZOS4 8*8像素邻域内的Lanczos插值

使用注意事项
- dsize和fx/fy不能同时为0
- 正常情况使用默认的双线性插值就够用了
- 插值效率:最邻近插值>双线性插值>双立方插值>Lanczos插值,效率与效果成反比
-

示例代码

# -*- coding: utf-8 -*-#10-16.pyimport cv2fn="test.jpg"img = cv2.imread(fn)w= img.shape[1]h= img.shape[0]# 双立方插值放大newimg1 = cv2.resize(img, (w*2,h*2),interpolation = cv2.INTER_CUBIC)# 缩小 像素关系重采样newimg2 = cv2.resize(img,(300,200),interpolation=cv2.INTER_AREA)cv2.imshow('source',img)cv2.imshow('preview1',newimg1)cv2.imshow('preview2',newimg2)cv2.waitKey()cv2.destroyAllWindows()

运行示例:
原图
这里写图片描述
放大
这里写图片描述
缩小
这里写图片描述

参考:
http://www.cnblogs.com/korbin/p/5612427.html

原创粉丝点击