进一步学习灵活的操作!
1、图像的旋转和平移
旋转和平移都是借助cv2.warpAffine()
函数实现的,其区别是转换矩阵M的不同。
旋转利用cv2.getRotationMatrix2D()
函数构造旋转矩阵,平移矩阵利用二维数组构建。
语法:cv2.warpAffine(src, M, desize, dst, flags, borderMode, borderValue)
其中,src------源图像,M------转换矩阵
desize------tuple类型参数。目标图像的宽高,即新的图像宽高(新的图像可能包含部分或者全部变换后的图像,其他区域一般由黑色像素填充)。
dst------目标图像,在python中无任何意义,一般不传参或设成None。
flags---插值方法。cv2.INTER_NEAREST
,最近邻插值;cv2.INTER_LINEAR
,线性插值(默认值);cv2.INTER_AREA
,区域插值;cv2.INTER_CUBIC
,三次样条插值等。
borderMode ------边界像素模式
borderValue ------边界填充值(即显示框内图像之外的区域),默认值为0.
旋转矩阵的构造:
语法:cv2.getRotationMatrix2D( center , angel , scale )
参数:center ------图像的旋转中心,是一元祖类型的参数。即在图像构建的坐标系中选取旋转中心。
angle ------ 旋转角度(角度制),正负值遵循坐标系角度规则。
scale ------ 图像的缩放比例因子。
平移矩阵的构造
语法:构造数组,2Darray = np.ndarray([[1,0,tx],[0,1,ty]])
参数:tx ------正值,图像将右移[tx]个像素;负值,将向左移[ tx]个像素。
ty ------正值,图像将下降[ty]个像素;负值,将向上移[ty]个像素。
平移矩阵,M = 2Darray
相关例子:
1 import cv2 2 import numpy as np 3 4 car = cv2.imread('car.png') 5 print(car.shape) 6 height, width = car.shape[:2] 7 8 # 旋转图像 9 center = (width/3 , height/10) 10 rotate_matrix = cv2.getRotationMatrix2D(center, -15, scale = 1.2) 11 rotate_car = cv2.warpAffine(car, rotate_matrix, dsize = (500,300)) 12 13 # 原图像以坐标(width/3 , heigjht/10)为旋转中心旋转-15度然后再缩放1.2倍 14 15 cv2.imshow('original_imag',car) 16 cv2.imshow('rotate',rotate_car) 17 cv2.waitKey(0) 18 cv2.destroyAllWindows()
1 import cv2 2 import numpy as np 3 4 car = cv2.imread('car.png') 5 print(car.shape) 6 height, width = car.shape[:2] 7 8 #平移图像 9 tx, ty = width/5, -height/5 10 translation_matrix = np.array([[1,0,tx], [0,1,ty]]) 11 translation_car = cv2.warpAffine(car,translation_matrix,dsize=(500,300)) 12 cv2.imshow('original_img',car) 13 cv2.imshow('translation_car',translation_car) 14 cv2.waitKey(0) 15 cv2.destroyAllWindows()
2、图像翻转
图像翻转,也就是通常所说的镜像。主要包括垂直翻转、水平翻转、水平垂直翻转。
语法:cv2.flip( src, flipCode)
src ------ 源图像
flipCode ------ 翻转方式。 flipCode == 0 , 垂直翻转(沿x轴翻转)
flipCode > 0 , 水平翻转(沿y轴翻转)
flipCode < 0 , 水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)
1 import cv2 2 import numpy as np 3 4 car = cv2.imread('car.png') 5 # 翻转图像 6 flip_cat1 = cv2.flip(car, flipCode=0) 7 flip_cat2 = cv2.flip(car, flipCode=1) 8 flip_cat3 = cv2.flip(car, flipCode=-1) 9 10 combined = np.hstack((car,flip_cat1,flip_cat2,flip_cat3)) 11 cv2.imshow('combined',combined) 12 cv2.waitKey(0) 13 cv2.destroyAllWindows()
标签:car,cv2,flip,笔记,学习,Opencv,图像,------,翻转 From: https://www.cnblogs.com/Zhouce/p/17874387.html