计算机视觉基础系列(python与opencv的操作与运用/tensorflow的基础介绍)(十)---图片的仿射变换和旋转

一,图片的仿射变换

图片的仿射变换,需要根据图片的左上角,右下角及右上角来进行变换。

解析来就是代码部分:

import cv2
import numpy as np
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[1]
# 寻找图片的左上角,左下角和右上角
src = np.float32([[0, 0], [0, height-1], [width-1, 0]])
dst = np.float32([[50, 50], [300, height-200], [width-300, 100]])
# 组合两个矩阵
matdst = cv2.getAffineTransform(src, dst)       # 矩阵组合API,两个参数要记住
findst = cv2.warpAffine(img, matdst, (width, height))   # 仿射变换API
cv2.imshow('image', findst)
cv2.waitKey(0)

仿射变换的结果是:

二、图片的旋转

图片的旋转,首先,定义一个旋转矩阵;旋转的API里面有三个参数,第一个是中心点,第二个是旋转的角度,第三个是缩放的系数,为何旋转要缩放呢:因为旋转之后可能会超出图片的范围,导致图片显示不完整。

源代码是:

import cv2
import numpy as np
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[1]
src = cv2.getRotationMatrix2D((height*0.5, width*0.5), 45, 0.5)
dst = cv2.warpAffine(img, src, (height, width))
cv2.imshow('dst', dst)
cv2.imshow(0)

得出的结果是:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章