python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective
本文链接:https://blog.csdn.net/qq_27261889/article/details/80720359
# usr/bin/env python
# coding: utf- ##################### 对图像进行变换(旋转)
# 2018年6月17日07::
import cv2
import numpy as np # 这里说一下旋转的opencv中为旋转提供的三个要素
# 旋转的中心点(center)
# 旋转角度()
# 旋转后进行放缩
# 我们可以通过cv2.getRotationMatrix2D函数得到转换矩阵 img = cv2.imread('cat.jpg')
rows,cols,_ = img.shape matrix = cv2.getRotationMatrix2D((cols/,rows/),,)
# 得到变换的矩阵,通过这个矩阵再利用warpAffine来进行变换
# 第一个参数就是旋转中心,元组的形式,这里设置成相片中心
# 第二个参数90,是旋转的角度
# 第三个参数1,表示放缩的系数,1表示保持原图大小 img1 = cv2.warpAffine(img,matrix,(cols,rows)) cv2.imshow('img',img)
cv2.imshow('img1',img1) ##################### 对图像进行变换(三点得到一个变换矩阵)
# 我们知道三点确定一个平面,我们也可以通过确定三个点的关系来得到转换矩阵
# 然后再通过warpAffine来进行变换 img = cv2.imread('dog.jpg')
rows,cols,_ = img.shape points1 = np.float32([[,],[,],[,]])
points2 = np.float32([[,],[,],[,]]) matrix = cv2.getAffineTransform(points1,points2) output = cv2.warpAffine(img,matrix,(cols,rows)) cv2.imshow('input',img)
cv2.imshow('output',output) ##################### 对图像进行变换(四点得到一个变换矩阵)
# 进行透视变换
# 可以先用四个点来确定一个3*3的变换矩阵(cv2.getPerspectiveTransform)
# 然后通过cv2.warpPerspective和上述矩阵对图像进行变换 img = cv2.imread('cat.jpg')
rows,cols,_ = img.shape
points1 = np.float32([[,],[,],[,],[,]])
points2 = np.float32([[,],[,],[,],[,]]) matrix = cv2.getPerspectiveTransform(points1,points2)
# 将四个点组成的平面转换成另四个点组成的一个平面 output = cv2.warpPerspective(img, matrix, (cols, rows))
# 通过warpPerspective函数来进行变换 cv2.imshow('img',img)
cv2.imshow('output',output)
cv2.waitKey()
cv2.destroyAllWindows()
python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective的更多相关文章
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- 转:python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...
- python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法方法1 用List的内建函数list sort进行排序list sort(func=None, key=None, reverse=False)Pytho ...
- Python修改文件的两种方法
目录: 一.以占用内存的方式修改文件 二.以占用硬盘的方式修改文件 引言 文件修改的方法从操作方式上大致可以分为两类,一种是以占用电脑内存的方式,将文件读取到内存中修改再存回硬盘:第二种方法是分别打开 ...
- 在linux环境下编译运行OpenCV程序的两种方法
原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之 ...
- python更新数据库脚本两种方法
最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新 import MySQ ...
- 【Python】python更新数据库脚本两种方法
最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新 1 import ...
- 使用Python生成源文件的两种方法
利用Python的字符串处理模块,开发者能够编写脚本用来生成那些格式同样的C.C++.JAVA源程序.头文件和測试文件,从而避免大量的反复工作. 本文概述两种利用Python string类生成jav ...
- python 取整的两种方法
问题简介: 要把一个浮点数(float)整数部分提取出来.比如把“2.1”变成“2”的这一过程:现在我们给这个过程起一个名字叫“取整”.那么它 在python中大致可以有两种写法 写法1)类型转换: ...
随机推荐
- redhat6.7 yum网络源配置
RedHat自带的yum源需要当前系统注册了RHN才可以使用,如果没有注册,当使用yum时,会提示需要注册RHN 如果没有注册RHN,则意味着我们不能使用RedHat自带的yum源.这个时候,我们可以 ...
- 【Bug】MQ消息与事务提交
项目联调期间,遇到个bug,涉及MQ消息传递和事务提交时间问题,简单记录下. 背景 审核服务(审核创建项目),点击审核通过,后台代码会在提交事务前发送MQ消息(该消息由项目管理服务消费),发送成功后, ...
- 16寸屏苹果MacBook Pro悄悄上市,售价18999 元起步
传闻了半年之久的16寸屏苹果MacBook Pro于11月13日夜晚终于上线,15寸的机身16寸的屏幕,相比于此前的13寸和15寸MacBook Pro,新品搭配了更大的屏幕.更高性能的处理器以及更大 ...
- 渗透之路基础 -- XXE注入漏洞
XXE漏洞 XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件, ...
- 更改intellij高亮字体背景颜色
intellij工具中依次进入file -> settings -> editor -> colors & fonts -> general,在右侧窗口中将result ...
- Idea导入maven项目
1.idea中有项目的关闭项目 File>>close project 回到截图 下一步>下一步
- C++面向程序设计(第二版)课后习题答案解析
最近没什么心情整理零散的知识点,就整理一下第四章的课后习题答案. 1.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算.将运算符函数重载为非成员函数,非友元的普通函数.编程序, ...
- CEOI2019 / CodeForces 1192B. Dynamic Diameter
题目简述:给定一棵$N \leq 10^5$个节点的树,边上带权,维护以下两个操作: 1. 修改一条边的边权: 2. 询问当前树的直径长度. 解1:code 注意到树的直径有以下性质: 定理:令$\t ...
- Tensorflow细节-P174-真正的图像预处理
注意这里的读取image_raw_data = tf.gfile.FastGFile("./datasets/cat.jpg", "rb").read(),写入 ...
- H3CNE学习1 课程简介
一.认证对比 二.企业网架构