【OpenCV学习】(六)图像基本变换

本文介绍了OpenCV中的图像缩放、翻转、旋转、仿射变换(包括平移和旋转)、透视变换等基本操作,以及如何通过变换矩阵实现这些效果。重点讲解了获取变换矩阵的不同方法和实际应用场景,是图像预处理和深度学习项目中的实用技巧。

【OpenCV学习】(六)图像基本变换

背景

图像的变换通常用于数据预处理部分,例如缩放旋转等常见的图像变换方法;在一些深度学习框架内部都分装了图像变换的方法,对训练集做统一的图像变换操作;

一、图像缩放

函数原型:

resize(src,dsize,[fx,fy,interpolation])

  • fx:x轴的缩放因子;
  • fy:y轴的缩放因子;
  • interpolation:插值算法;

插值算法有以下几种:

1、INTER_NEAREST:最近邻插值,速度快,效果差;

2、INTER_LINEAR:双线性插值,基于原图的四个点;(默认插值方法)

3、INTER_CUBIC:三次插值,基于原图16个点,效果好但耗时大;

4、INTER_AREA:效果最好,速度也最慢;

二、图像翻转

图像翻转不等同于旋转,类似于一些视频的拍摄,拍摄后实际是左右颠倒的,通过图像翻转可进行还原;

函数原型:

filp(img,filpCode):filpCode等于0(上下翻转)、大于0(左右翻转)、小于0(上下+左右翻转)

代码案例:

cv2.filp(img, 0)	# 上下翻转
cv2.filp(img, 1)	# 左右翻转
cv2.filp(img, -1)	# 上下左右翻转

三、图像旋转

函数原型:

rotate(img,rotateCode)

  • ROTATE_90_CLOCKWISE:顺时针旋转90°
  • ROTATE_180:旋转180°
  • ROTATE_90_COUNTERCLOCKWISE:逆时针旋转90°

四、图像仿射变换——平移

首先介绍一下放射变换,简单来说就是图像旋转、缩放、平移的总称;

函数原型:

warpAffine(src,M,dsize,flags,mode,value)

  • M:变换矩阵
  • dsize:输出尺寸大小
  • flags:与size中的插值算法一致
  • mode:边界外推法标志
  • value:填充边界的值

实际上平移矩阵就是一个2x2的单位矩阵加上一个2x1的平移向量,也就是2x3的矩阵;

代码案例:

img = cv2.imread('img.jpg')
h,w,c = img.shape
M = np.float32(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值