■ Similarity Transform(相似变换)

Similarity Transform(相似变换) = Rotation(旋转) + Translation(平移) + Scale(放缩)

● 性质:Right angle is still right angle (保角性)

代码:

import cv2
import matplotlib.pyplot as plt
import numpy as npimg = cv2.imread('lenna.jpg', 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# print(img.shape)# 得到相似变换的矩阵  # center:旋转中心 angle:旋转角度   scale:缩放比例
M = cv2.getRotationMatrix2D(center = (img.shape[0]/2,img.shape[1]/2),angle = 30,scale = 0.5) # 原图像按照相似矩阵进行相似变换  三个参数:原图像,相似矩阵,画布面积
img_rotate = cv2.warpAffine(img, M, (img.shape[0], img.shape[1]))plt.figure(figsize=(8,8))
plt.subplot(1,2,1)
plt.imshow(img)
plt.subplot(1,2,2)
plt.imshow(img_rotate)
plt.show()

原图和相似变换后的图像:

■ Affine Transform(仿射变换)

● 性质:Parallel lines are still parallel lines(不再具有保角性,具有保平行性)
● 三个非共线的点对(6 parameters)确定一个仿射变换。

代码:

import cv2
import matplotlib.pyplot as plt
import numpy as np# 3 Src(原始) Points + 3 Dst(目标) Points
# cols:列/长  rows:行/宽img = cv2.imread('lenna.jpg', 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# print(img.shape)cols = img.shape[0]
rows = img.shape[1]pt1 = np.float32([[0,0], [cols, 0], [0, rows]])
pt2 = np.float32([[cols*0.3, rows*0.3], [cols*0.8, rows*0.2], [cols*0.1, rows*0.9]])# [[0,0], [cols, 0], [0, rows]] --> [[cols*0.3, rows*0.3], [cols*0.8, rows*0.2], [cols*0.1, rows*0.9]]
M = cv2.getAffineTransform(pt1, pt2)       # 仿射变换矩阵
dst = cv2.warpAffine(img, M, (cols, rows))plt.figure(figsize=(8,8))
plt.subplot(1,2,1)
plt.imshow(img)
plt.subplot(1,2,2)
plt.imshow(dst)
plt.show()

原图和相似变换后的图像:

■ Perspective Transform(透视/投影变换)

● 性质:Lines are still lines(不保角,不保平行,保直线性)
● 四个非共线的点对(8 parameters)确定一个透视变换。

代码:

import cv2
import matplotlib.pyplot as plt
import numpy as npimg = cv2.imread('lenna.jpg', 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)width = img.shape[1]
height = img.shape[0]pts1 = np.float32([[0,0], [width,0], [0,height], [width,height]])
pts2 = np.float32([[width*0.1,height*0.1], [width*0.9, width*0.1], [height*0.2,height*0.8], [width*0.7,height*0.7]])M_warp = cv2.getPerspectiveTransform(pts1, pts2)     # 单应性矩阵
img_warp = cv2.warpPerspective(img, M_warp, (width, height))plt.figure(figsize=(8,8))
plt.subplot(1,2,1)
plt.imshow(img)
plt.subplot(1,2,2)
plt.imshow(img_warp)
plt.show()

原图和透视变换后的图像:

【opencv】图像处理之相似变换、仿射变换、透视变换相关推荐

  1. halcon opencv 图像处理面试指南

    珠海某上市公司算法总监: 1.相机标定的原理与坐标系之间的转换,如何转换 2.激光三角原理,如何搭建 3.测量拟合的过程中有哪些算子,原理什么,接着问5,跌代多少次?什么情况最优,如何优化, 4.那个 ...

  2. Python OpenCV图像处理 理论 代码

    python opencv图像处理 GitHub - LeBron-Jian/ComputerVisionPractice OpenCV计算机视觉学习 & 代码 OpenCV计算机视觉学习(1 ...

  3. OPENCV图像处理基础

    OPENCV图像处理基础 1.图像处理基础 1.1 数字图像 1.1.1 数字图像概念: 1.1.2 数字图像起源: 1.1.3 常见成像方式: 1.1.4 数字图像的应用: 1.1.5 Opencv ...

  4. Java OpenCV 图像处理04.0 图像形状与文字绘制

    Java OpenCV 图像处理04.0 图像形状与文字绘制 Github 代碼地址 OpenCV 仿射变换.透视变换.旋转.平移.缩放 序號 名稱 方法 1 圖像 添加文字 Imgproc.putT ...

  5. opencv图像处理总结

    opencv图像处理基本操作 1. 矩阵数据类型 通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 其中,S表示带符号整 ...

  6. OpenCV图像处理(Python)学习笔记

    OpenCV图像处理 OpenCV图像处理 第1章 OpenCV入门 第2章 图像处理基础 2.1 基本表示方法 2.2 感兴趣区域(ROI) 第3章 图像运算 3.1 加法运算 3.2 图像加权和 ...

  7. OpenCV图像处理基础(变换和去噪)

    OpenCV图像处理基础(变换和去噪) 基础知识 使用OpenCV读取图片 图像变换 仿射变换 图像缩放 图像旋转 图像平移 图像裁剪 图像翻转 亮度与对比度变换 图像去噪 高斯噪声 椒盐噪声 中值和 ...

  8. 免费送书啦!《 OpenCV图像处理入门与实践》一本全搞定

    OpenCV 的基础图像操作都只是针对图像中的像素点,并不是直接对图像整体进行的操作.而很多时候并不能仅通过改变像素点来进行图像的操作,为此我们需要学习关于图像的算术操作. 1.图像加法 对于两张相同 ...

  9. python怎么让x轴45°展示_python opencv实现任意角度的透视变换实例代码

    本文主要分享的是一则python+opencv实现任意角度的透视变换的实例,具体如下: # -*- coding:utf-8 -*- import cv2 import numpy as np def ...

  10. 《OpenCV图像处理》——1.7 用户交互工具

    本节书摘来自华章计算机<OpenCV图像处理>一书中的第1章,第1.7节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区&q ...

最新文章

  1. 分享6 个值得收藏的 Python 代码
  2. 不降低scipy版本解决AttributeError: module ‘scipy.misc‘ has no attribute ‘imresize‘问题
  3. 【Django】ImportError: cannot import name 'execute_manager'
  4. commit 规范性提交
  5. emplode php|,字符串的分割/组合/逆序等
  6. Jspx.net Framework 6.38发布
  7. android studio模拟器闪一下,android studio连接雷电模拟器 【AS 模拟器】
  8. 推荐7款珍藏已久的手机APP,非常实用
  9. 三星s窗口共享android,使用 S 窗口共享轻松让您的三星手机连接电脑
  10. JVM 内存分配策略
  11. linux 充电桩计费模块,充电桩及计费方法与流程
  12. 《炬丰科技-半导体工艺》ZnO多晶薄膜异质结
  13. provide和inject 用法
  14. CVPR2020交互式分割算法IOG的配置(Interactive Object Segmentation with Inside-Outside Guidance)
  15. 计算机领域模范,喜报 | 我院陆品燕教授获2020年上海市“劳动模范(先进工作者)”称号...
  16. InvalidOptions: Requested option conflicts with current storage engine option for directoryPerDB
  17. 同源策略是什么,有何作用
  18. 春秋狂士狂喷开发文档管理
  19. 【免费分享】2020-2021年广告营销类行业报告集合(149份)
  20. gif透明背景动画_BMP、GIF、TIFF、PNG、JPG和SVG格式图像的特点

热门文章

  1. 移植RTT使用cubeMx配置后出现 cannot open source input file stm32f1xx_hal_exti.h: No such file or directory
  2. 重绘CButton控件
  3. 1016.外网资源下载神器
  4. mysql 字符串取前缀_mysql截取字符串的函数总结
  5. Linux 多线程应用中如何编写安全的信号处理函数
  6. linux路由内核实现分析(二)---FIB相关数据结构(4)
  7. Linux+varnish安装配置
  8. oracle如何获取自增id,oracle实现自增id
  9. 【Java数据结构与算法】第一章 稀疏数组和队列
  10. 用实例的方式去理解storm的并发度