Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_opencv
提交
08d577da
S
skill_tree_opencv
项目概览
CSDN 技术社区
/
skill_tree_opencv
通知
44
Star
9
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
08d577da
编写于
12月 12, 2021
作者:
youcans_
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
上传新文件
上级
6265c382
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
95 addition
and
0 deletion
+95
-0
data/1.OpenCV初阶/4.几何变换和图像特征/1.仿射变换/Affine1.md
data/1.OpenCV初阶/4.几何变换和图像特征/1.仿射变换/Affine1.md
+95
-0
未找到文件。
data/1.OpenCV初阶/4.几何变换和图像特征/1.仿射变换/Affine1.md
0 → 100644
浏览文件 @
08d577da
# 仿射变换
几何变换是指对对图像的位置、大小、形状、投影进行变换,是将图像从原始平面投影到新的视平面。仿射变换(Affine)的特点是原始图像中的平行关系和线段长度比例关系保持不变。
仿射变换矩阵中有 6 个未知参数,cv2.getAffineTransform() 根据图像中不共线的 3 个点在变换前后的对应位置坐标,求出仿射变换矩阵。cv2.warpAffine() 通过变换矩阵计算得到变换后的图像。
**函数说明:**
```
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst
```
旋转也是一种简单仿射变换,我们用变换矩阵将下面的色块图旋转一下,看看会产生什么样的效果吧。
![](
./affine2.png
)
下面对仿射变换实现代码正确的是?
## 答案
```
import cv2 as cv
import numpy as np
if __name__ == '__main__':
img = cv.imread("affine1.jpg")
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[50, 100], [200, 50], [100, 250]])
MA = cv.getAffineTransform(pts1, pts2)
dst = cv.warpAffine(img, MA, img.shape[:2])
cv.imshow("Origin image", img)
cv.imshow("Affine transform", dst)
cv.waitKey(0)
```
## 选项
### 需要 3个给定点变换前后的位置才能计算变换矩阵
```
import cv2 as cv
import numpy as np
if __name__ == '__main__':
img = cv.imread("affine1.jpg")
pts1 = np.float32([[50, 50], [200, 50]])
pts2 = np.float32([[50, 100], [200, 50]])
MA = cv.getAffineTransform(pts1, pts2)
dst = cv.warpAffine(img, MA, img.shape[:2])
cv.imshow("Origin image", img)
cv.imshow("Affine transform", dst)
cv.waitKey(0)
```
### 函数 cv.getAffineTransform() 缺少给定点变换后的位置
```
import cv2 as cv
import numpy as np
if __name__ == '__main__':
img = cv.imread("affine1.jpg") # 读取彩色图像(BGR)
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
MA = cv.getAffineTransform(pts1)
dst = cv.warpAffine(img, MA, img.shape[:2])
cv.imshow("Origin image", img)
cv.imshow("Affine transform", dst)
cv.waitKey(0)
```
### 函数 cv.warpAffine() 缺少参数:图像大小 dsize
```
import cv2 as cv
import numpy as np
if __name__ == '__main__':
img = cv.imread("affine1.jpg") # 读取彩色图像(BGR)
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[50, 100], [200, 50], [100, 250]])
MA = cv.getAffineTransform(pts1, pts2)
dst = cv.warpAffine(img, MA)
cv.imshow("Origin image", img)
cv.imshow("Affine transform", dst)
cv.waitKey(0)
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录