OpenCV图像处理——几何变换

目录

  • 图像缩放
  • 图像平移
  • 图像旋转
  • 图像的仿射变换
  • 透射变换
  • 图像金字塔

图像缩放

cv.resize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR)

OpenCV图像处理——几何变换_第1张图片

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

kids=cv.imread('./汪学长的随堂资料/4/图像操作/dog.jpg')
plt.imshow(kids[:,:,::-1])

OpenCV图像处理——几何变换_第2张图片

# 绝对尺寸
rows,cols=kids.shape[:2]
res=cv.resize(kids,(2*cols,2*rows))
plt.imshow(res[:,:,::-1])

OpenCV图像处理——几何变换_第3张图片

# 相对尺寸
res1=cv.resize(kids,None,fx=0.5,fy=0.5)
plt.imshow(res1[:,:,::-1])

OpenCV图像处理——几何变换_第4张图片

图像平移

cv.warpAffine(img,M,dsize)

OpenCV图像处理——几何变换_第5张图片
OpenCV图像处理——几何变换_第6张图片

M=np.float32([[1,0,100],[0,1,50]])
res2=cv.warpAffine(kids,M,(cols,rows))
plt.imshow(res2[:,:,::-1])

OpenCV图像处理——几何变换_第7张图片

图像旋转

cv.getRotationMatrix2D(center,angle,scale)

OpenCV图像处理——几何变换_第8张图片

M=cv.getRotationMatrix2D((cols/2,rows/2),45,1)
res3=cv.warpAffine(kids,M,(cols,rows))
plt.imshow(res3[:,:,::-1])

OpenCV图像处理——几何变换_第9张图片

图像的仿射变换

点线关系的仿射结果在原图像是一样的,但是线长度,线与线的角度会发生变化
OpenCV图像处理——几何变换_第10张图片
OpenCV图像处理——几何变换_第11张图片
OpenCV图像处理——几何变换_第12张图片

# 原始位置
pts1=np.float32([[50,50],[200,50],[50,200]])
# 仿射后的位置
pts2=np.float32([[100,100],[200,50],[100,250]])
M=cv.getAffineTransform(pts1,pts2)
res4=cv.warpAffine(kids,M,(cols,rows))
plt.imshow(res4[:,:,::-1])

OpenCV图像处理——几何变换_第13张图片

透射变换

视角的变换
在这里插入图片描述

OpenCV图像处理——几何变换_第14张图片

pst1=np.float32([[56,65],[368,52],[28,387],[389,390]])
pst2=np.float32([[100,145],[300,100],[80,290],[310,300]])
T=cv.getPerspectiveTransform(pst1,pst2)
res5=cv.warpPerspective(kids,T,(cols,rows))
plt.imshow(res5[:,:,::-1])

OpenCV图像处理——几何变换_第15张图片

图像金字塔

OpenCV图像处理——几何变换_第16张图片

imgup=cv.pyrUp(kids)
plt.imshow(imgup[:,:,::-1])

OpenCV图像处理——几何变换_第17张图片

imgdown=cv.pyrDown(kids)
plt.imshow(imgdown[:,:,::-1])

OpenCV图像处理——几何变换_第18张图片

你可能感兴趣的:(tensorflow解决cv,opencv,图像处理,人工智能)