openCV之仿射

简介: openCV之仿射

16 仿射

16.1 平移

在这里插入图片描述

# 仿射变换之平移
import cv2
import numpy as np

# 导入图片
dog = cv2.imread('./image/dog.png')
h, w, ch = dog.shape
M = np.float32([[1, 0, 100], [0, 1, 0]])
# 注意opencv中是先宽度,再高度
new = cv2.warpAffine(dog, M, (w, h))
cv2.imshow('new', new)
cv2.waitKey(0)
cv2.destroyAllWindows()

16.2 旋转

仿射变换的难点就是计算变换矩阵, OpenCV提供了计算变换矩阵的API
getRotationMatrix2D(center, angle, scale)

  • center 中心点,以图片的哪个点作为旋转时的中心点.
  • angle角度:旋转的角度,按照逆时针旋转.
  • scale缩放比例:想把图片进行什么样的缩放.
# 仿射变换之平移
import cv2
import numpy as np

# 导入图片
dog = cv2.imread('./image/dog.png')
h, w, ch = dog.shape
# M = np.float32([[1,0,100],[0,1,0]])
# 注意旋转的角度为逆时针.
M = cv2.getRotationMatrix2D((100, 100), 15, 1.0)
# 以图像中心点旋转
# M = cv2.getRotationMatrix2D((w / 2, h / 2), 15, 1.0)
# 注意.opencv中是先宽度,再高度
new = cv2.warpAffine(dog, M, (w, h))
cv2.imshow(' new', new)
cv2.waitKey(0)
cv2.destroyAllWindows()

16.3 透视变换

  • warpPerspective(img, M, dsize,.…)
  • 对于透视变换来说,M是一个3*3的矩阵.
  • getPerspectiveTransfrm(src, dst)获取透视变换的变换矩阵,需要4个点,即图片的4个角
    ```python

    透视变换

    import cv2
    import numpy as np

导入图片

img = cv2.imread('./image/cat.png')
print(img.shape)
src = np.float32([[50, 50], [450, 50], [450, 50], [450, 450]])
dst = np.float32([[0, 0], [400, 0], [0, 400], [400, 400]])
M = cv2.getPerspectiveTransform(src, dst)
new = cv2.warpPerspective(img, M, (400, 400))

cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 640, 480)
cv2.namedWindow('new', cv2.WINDOW_NORMAL)
cv2.resizeWindow('new', 640, 480)
cv2.imshow('img ', img)
cv2.imshow('new', new)

cv2.waitKey(0)
cv2.destroyAllWindows()
```

目录
相关文章
|
7月前
|
计算机视觉
【OpenCV】-仿射变换
【OpenCV】-仿射变换
|
7月前
|
算法 计算机视觉
【OpenCV】仿射变换中cv2.estimateAffine2D 的原理
【OpenCV】仿射变换中cv2.estimateAffine2D 的原理
325 0
|
7月前
|
计算机视觉
OpenCV(十一):图像仿射变换
OpenCV(十一):图像仿射变换
139 0
|
算法 API 计算机视觉
OpenCV(图像处理)-基于Python-图像的基本变换-平移-翻转-仿射变换-透视变换
OpenCV(图像处理)-基于Python-图像的基本变换-平移-翻转-仿射变换-透视变换
181 0
|
计算机视觉
opencv仿射变换和透视变换(二)实践篇
opencv仿射变换和透视变换(二)实践篇
225 0
opencv仿射变换和透视变换(二)实践篇
|
Serverless API 计算机视觉
opencv仿射变换和透视变换(一)理论篇
opencv仿射变换和透视变换(一)理论篇
1174 0
opencv仿射变换和透视变换(一)理论篇
|
计算机视觉
OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】(上)
OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】
204 0
OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】(上)
|
计算机视觉
OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】(下)
OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】
284 0
OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】(下)
|
计算机视觉
OpenCV实现仿射变换
什么是仿射变换?¶ 一个任意的仿射变换都能表示为 乘以一个矩阵 (线性变换) 接着再 加上一个向量 (平移). 综上所述, 我们能够用仿射变换来表示: 旋转 (线性变换) 平移 (向量加) 缩放操作 (线性变换) 你现在可以知道, 事实上, 仿射变换代表的是两幅图之间的 关系 .
1172 0
|
2月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
477 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解