分享

python+opencv图像处理(十)

 pythonjava学习 2021-04-06

图像旋转

本篇主要利用opencv的转换函数warpAffine实现图像的平移和旋转。
1、图像旋转
图像旋转即是根据某个中心点进行旋转。
要进行旋转,要找到中心点,要知道旋转角度,opencv提供了函数cv2.getRotationMatrix2D来构造变换矩阵,然后将其传给warpAffine函数进行变换。
如下图所示,左图为原图,右图是旋转45度后的图。

其代码如下:
import cv2
import numpy as np
img = cv2.imread('E:/image/le.jpg',0)
rows,cols = img.shape
center=((cols-1)/2,(rows-1)/2)
M = cv2.getRotationMatrix2D(center,45,1)#定义旋转矩阵,第一个参数是中心点,第二个参数是旋转角度,第三个参数是缩放比例
dst = cv2.warpAffine(img,M,(cols,rows),borderValue=200)#进行变换,第一个参数是原图,第二个参数是变换矩阵,第三个参数是变换后的图像尺寸大小,第四个参数可省,为边界填充值,默认为0
cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
以下为旋转90度和180度的图,边界未填充,故为黑色。

以下为旋转-45度,-90度的结果图。

此函数也可用于彩色图像,如下图所示,左图为原图,右图为旋转-45度后的图,中心点都是原图的中心点。

2图像平移
移是对象位置的转换,其实就是偏移(x,y)的值,可以构造矩阵M,并应用warpAffine函数进行平移。
如下图所示,左图为原图,右图为平移后的图。

其代码如下:
import cv2
import numpy as np
img = cv2.imread('E:/image/le.jpg',0)
rows,cols = img.shape
M = np.float32([[1,0,100],[0,1,50]])#定义变换矩阵
dst = cv2.warpAffine(img,M,(cols,rows))#仿射变换函数进行变换,第一个参数是原图,第二个参数是变换矩阵,第三个是输出图像的大小
cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
3、函数cv2.warpAffine

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多