opencv实现图像几何变换


Posted in Python onMarch 24, 2021

图像伸缩(cv2.resize)

图像的扩大与缩小有专门的一个函数,cv2.resize(),那么关于伸缩需要确定的就是缩放比例,可以是x与y方向相同倍数,也可以单独设置x与y的缩放比例。另外一个就是在缩放以后图像必然就会变化,这就又涉及到一个插值问题。那么这个函数中,缩放有几种不同的插值(interpolation)方法,在缩小时推荐cv2.INTER_ARER,扩大是推荐cv2.INTER_CUBIC和cv2.INTER_LINEAR。默认都是cv2.INTER_LINEAR,比如:

import cv2
import matplotlib.pyplot as plt
 
img = cv2.imread('d:/1.jpg')
# 插值:interpolation
# None本应该是放图像大小的位置的,后面设置了缩放比例,
#所有就不要了
res1 = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#直接规定缩放大小,这个时候就不需要缩放因子
height,width = img.shape[:2]
res2 = cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(res1)
plt.subplot(133)
plt.imshow(res2)
plt.show()

opencv实现图像几何变换

图像平移(cv2.warpAffine)

opencv实现图像几何变换

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
img = cv2.imread('d:/1.jpg')
H = np.float32([[1, 0, 100], [0, 1, 50]])
rows, cols = img.shape[:2]
res = cv2.warpAffine(img, H, (rows, cols)) # 需要图像、变换矩阵、变换后的大小
plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(res)
plt.show()

opencv实现图像几何变换

图像旋转(逆时针旋转,cv2.warpAffine和cv2.getRotationMatrix2D)

opencv实现图像几何变换

为了构造这个矩阵,opencv提供了一个函数:

cv2.getRotationMatrix2D(),这个函数需要三个参数,旋转中心,旋转角度,旋转后图像的缩放比例,比如下例:

import cv2
 import matplotlib.pyplot as plt
 
 img = cv2.imread('d:/1.jpg')
 rows, cols = img.shape[:2]
 # 第一个参数旋转中心,第二个参数旋转角度,第三个参数:缩放比例
 M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)
 # 第三个参数:变换后的图像大小
 res = cv2.warpAffine(img, M, (rows, cols))
 
 plt.subplot(121)
 plt.imshow(img)
 plt.subplot(122)
 plt.imshow(res)
 plt.show()

opencv实现图像几何变换

Python 相关文章推荐
用Python和MD5实现网站挂马检测程序
Mar 13 Python
Python中的各种装饰器详解
Apr 11 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
Python爬虫工程师面试问题总结
Mar 22 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
python将音频进行变速的操作方法
Apr 08 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
PyQt QMainWindow的使用示例
Mar 24 #Python
PyQt 如何创建自定义QWidget
Mar 24 #Python
解决python 输出到csv 出现多空行的情况
opencv实现图像平移效果
python+selenium小米商城红米K40手机自动抢购的示例代码
Python使用openpyxl复制整张sheet
Mar 24 #Python
基于Python 函数和方法的区别说明
Mar 24 #Python
You might like
实例讲解php数据访问
2016/05/09 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
大学生个人事迹材料
2014/01/21 职场文书
社区国庆节活动方案
2014/02/05 职场文书
2014植树节活动总结
2014/03/11 职场文书
道路交通安全实施方案
2014/03/12 职场文书
公司晚会主持词
2014/03/22 职场文书
会计求职信范文
2014/05/24 职场文书
大学生个人求职信
2014/06/02 职场文书
银行催款通知书
2015/04/17 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
mysql数据库隔离级别详解
2022/06/16 MySQL
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers