OpenCV_Python官方文档10——图像几何变换

本文档详细介绍了OpenCV_Python中图像的几何变换,包括图像缩放、平移、旋转、仿射变换和透视变换。通过矩阵运算实现图像的各种变换,并提供了关键函数的使用方法和示例,如`cv2.resize()`、`cv2.warpAffine()`等,还特别提到了变换过程中的边界处理和插值方法的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV-Python Tutorials

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html

图像的几何变换主要包括:缩放、平移、旋转、仿射、透视等等。图像变换是建立在矩阵运算基础上的,通过矩阵运算可以很快的找到对应关系。

图像缩放

主要函数

注意:cv2.resize函数的dstdsize参数输入是 (宽度,高度),与img.shape相反。
对于img.shape的输出参数以及对应坐标请点击这里查看

import cv2
import numpy as np
import matplotlib.pyplot as plt 
import os 
os.chdir('C:/Users/lenovo/Pictures/')

dolphin = cv2.imread('dolphin.jpg')

#dst = cv2.resize(dolphin,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#or
rows,cols = dolphin.shape[:2]
dst = cv2.resize(dolphin,(2*cols,2*rows),interpolation=cv2.INTER_CUBIC)#放大一倍
dst1 = cv2.resize(dolphin,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_AREA)#缩小一倍

imgs = [dolphin,dst,dst1]
titles = ['dolphin','dst','dst1']
for i in range(len(imgs)):
    plt.subplot(1,len(imgs),i+1)
    imgs[i]=cv2.cvtColor(imgs[i],cv2.COLOR_BGR2RGB)
    plt.imshow(imgs[i],'gray')
    plt.title(titles[i])
    plt.axis('off')
plt.show()
输出结果

在这里插入图片描述

通过坐标轴可以看到图像的放大和缩小

主要函数

dst = cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])

  • src - 原输入图像

  • M - 仿射变换矩阵 ,一般反映平移或旋转的关系,为InputArray类型的2×3的变换矩阵

  • dsize - 输出变换图像的大小(这个大小如果不和原始图像大小相同,那么函数会自动通过插值来调整像素间的关系)

  • flags - 插值方法的组合(int 类型!)

  • borderMode - 边界像素模式(int 类型!)

  • borderValue - (重点!)边界填充值; 默认为0,即为黑色

  • flags:插值方法,共5种

    • INTER_LINEAR - 双线性插值(默认)
    • INTER_NEAREST - 最近邻插值
    • INTER_AREA - 基于像素局部的重采样插值
    • INTER_CUBIC - 三次样条插值
    • INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos(兰索斯)插值

注意:也就是说cv2.warpAffine()函数的dstdsize参数输入是 (宽度,高度),与img.shape相反。
对于img.shape的输出参数以及对应坐标请点击这里查看

图像平移

如果想要沿(x,y)方向移动,移动的距离为(tx,ty)即沿着x轴平移距离tx,沿着y轴平移距离ty,可以以下面方式构建平移矩阵。通过numpy来产生这个矩阵M。
M = [ 1 0 t x 0 1 t y ] M=\begin{bmatrix} 1 & 0 & tx\\ 0 & 1 & ty \end{bmatrix} M=[1001txty]

将图像沿x轴平移300像素,沿y轴平移500像素

import cv2
import numpy as np
import matplotlib.pyplot as plt 
import os 
os.chdir('C:/Users/lenovo/Pictures/')

img = cv2.imread('dolphin.jpg')

#平移
M = np.float32([[1,0,300],[0,1,500]])#仿射矩阵
rows,cols = img.shape[:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值