三、图像缩放、翻转

1、图像缩放

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

参数说明:

(1)src - 原图

(2)dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同

(3)dsize - 目标图像大小。指定方式(列大小,行大小),注意顺序

当dsize为0时,它可以通过以下公式计算得出:

所以,参数dsize和参数(fx, fy)不能够同时为0

(4)fx - 水平轴上的比例因子(即可以计算出列数)。当它为0时,计算公式如下:

(5)fy - 垂直轴上的比例因子(即可以计算出行数)。当它为0时,计算公式如下:

(5)interpolation - 插值方法。共有5种:

1)INTER_NEAREST - 最近邻插值法

2)INTER_LINEAR - 双线性插值法(默认)

3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。

4)INTER_CUBIC - 基于4x4像素邻域的3次插值法

5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

# encoding: utf-8

import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np

def show_img(img):
    plt.figure()
    plt.imshow(img)
    plt.show()

path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)

# 1
img2 = cv2.resize(img1,(200,100))
show_img(img2)

# 2
rows,cols,chn = img1.shape
size3 = (round(cols * 0.5),round(rows * 1.5) )#
img3 = cv2.resize(img1,size3)
show_img(img3)
# 3
fx = 0.5#水平方向变成原来0.5倍
fy = 1.3#竖直方向变成原来1.3倍
img4 = cv2.resize(img1,dsize=None,fx=fx,fy=fy)
show_img(img4)

2、图像翻转

flip(src, flipCode[, dst])

参数:

flipCodeAnno
1水平翻转,指以Y轴为中间线,左右翻转
0垂直翻转,指以X轴为中间线,上下翻转
-1水平垂直翻转,指先以Y轴为中间线,左右翻转,再以X轴为中间线,上下翻转

原图:

(1)水平翻转

水平翻转,指以Y轴为中间线,左右翻转

# encoding: utf-8

import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np

def show_img(img):
    plt.figure()
    plt.imshow(img)
    plt.show()

path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)

# 1、水平翻转
img2 = cv2.flip(img1,1)
show_img(img2)

(2)垂直翻转

垂直翻转,指以X轴为中间线,上下翻转

# encoding: utf-8

import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np

def show_img(img):
    plt.figure()
    plt.imshow(img)
    plt.show()

path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)

# 1、水平翻转
img2 = cv2.flip(img1,0)
show_img(img2)

(3)水平垂直翻转

水平垂直翻转,指先以Y轴为中间线,左右翻转,再以X轴为中间线,上下翻转

# encoding: utf-8

import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np

def show_img(img):
    plt.figure()
    plt.imshow(img)
    plt.show()

path1 = r"lena.jpg"
img1 = cv2.imread(path1)
show_img(img1)

# 1、水平翻转
img2 = cv2.flip(img1,-1)
show_img(img2)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值