1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【opencv 学习】仿射变换(图像的旋转 缩放 平移)

【opencv 学习】仿射变换(图像的旋转 缩放 平移)

时间:2019-09-16 18:08:24

相关推荐

【opencv 学习】仿射变换(图像的旋转 缩放 平移)

import numpy as npimport cv2# 仿射变换的两种方式:#1、利用变换前后的三个坐标点达到变换目的。#2、使用旋转角度和缩放倍数来变换。# 可以用矩阵相乘或者向量叠加到矩阵表示的所有操作(旋转、平移(向量叠加)、缩放),这个就是类似于一个矩阵的变换。图像本身就是一个矩阵img = cv2.imread(r'images/build.jpeg', 1)rows, cols, channels = img.shape # h,w,c# 第一部分:利用变换前的点和变换后的点求出仿射变换矩阵p1 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]]) # 原图像的点的集合p2 = np.float32([[0, rows * 0.3], [cols * 0.45, rows * 0.25], [cols * 0.15, rows * 0.58]]) # 变换后的图像的点的集合M = cv2.getAffineTransform(p1, p2) # 仿射变换矩阵img_rotated_by_points = cv2.warpAffine(img, M, dsize=(cols, rows)) # M 就是仿射变换矩阵, dsize就是原始图像size# 第二部分:利用旋转角度和缩放比例来求出仿射变换矩阵center = (cols / 4, rows / 4) # 这个点就是未来的平移点rot_mat = cv2.getRotationMatrix2D(center=center, angle=-35, scale=0.5) # 中心点,旋转角度,缩放比例img_rotated_by_alpha = cv2.warpAffine(img, rot_mat, (cols, rows))res = np.hstack((img, img_rotated_by_points, img_rotated_by_alpha))cv2.imshow('img', res)cv2.waitKey(0)cv2.destroyAllWindows()

效果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。