赞
踩
放射变换–图像翻转
import cv2 import numpy as np img1_path = "./108.jpg" # 读取图片 img1 = cv2.imread(img1_path) # 0-->上下 1-->左右 -1-->上下左右 img = cv2.flip(img1,-1) # 利用切片进行翻转,控制步长进行图像缩放 img1 = img1[::4,::4,::,-1] # 旋转图像 # 可选参数:cv2.ROTATE_90_CLOCKWISE,cv2.ROTATE_180,cv2.ROTATE_90_COUNTCLOCKWISE img0 = cv2.rotate(img1,cv2.ROTATE_90_CLOCKWISE) # 展示图像 cv2.imshow("img",img0) cv2.waitKey(0) cv2.destroyAllWindows()
平移
import cv2 import numpy as np img0_path = "./R-C.jpg" # 读取图片 img0 = cv2.imread(img0_path) # 设置变换矩阵(原图像像素乘以变换矩阵实现平移) M = np.float32([(1,0,200),(0,1,0)]) # 图像平移 # 参数(图像,变换矩阵,输出图像大小,插值方式,边界像素扩充方式) img = cv2.warpAffine(img0,M,(img0.shape[1],img0.shape[0])) # 展示图像 cv2.imshow("img",img) cv2.waitKey(0) cv2.destroyAllWindows()
获取变换矩阵
# 在进行仿射变换时,不方便进行矩阵求解,所以用到api自动求解M import cv2 import numpy as np img0_path = "./R-C.jpg" # 读取图片 img0 = cv2.imread(img0_path) h,w,c = img0.shape # 参数:(旋转的中心,旋转度数,缩放比例)规定按照逆时针转动 M = cv2.getRotationMatrix2D((100,100),15,1) img2 = cv2.warpAffine(img0,M,(w,h)) # 通过原图像三个点坐标和最终图像这三个点的坐标,来旋转图像 src = np.float32([(50,30),(800,500),(200,300)]) dst = np.float32([(500,300),(80,50),(20,30)]) M = cv2.getAffineTransform(src,dst) img = cv2.warpAffine(img0,M,(w,h)) # 展示图像 cv2.imshow("img",img) cv2.waitKey(0) cv2.destroyAllWindows()
透视变换
import cv2 import numpy as np img_path = "./123.jpg" img = cv2.imread(img_path) # 获取变换矩阵 # src是原图的四个坐标(左上,右上,左下,右下) # dst是变换后~~删除线格式~~ 的四个坐标(左上,右上,左下,右下) src = np.float32([(300,300),(1100,300),(1500,400),(1100,1500)]) dst = np.float32([(0,0),(1300,0),(0,1400),(1300,1400)]) M = cv2.getPerspectiveTransform(src,dst) img = cv2.warpPerspective(img,M,(1300,1400)) # 展示图像 cv2.imshow("img",img) cv2.waitKey(0) cv2.destroyAllWindows()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。