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)类型转换: ...
随机推荐
- 【转】CCS5.5从硬盘读入.dat数据格式的单张图像
首页 博客 学院 CSDN学院 下载 论坛 APP CSDN 问答 商城 活动 VIP会员 ...
- golang读写文件的几种方式
golang中处理文件有很多种方式,下面我们来看看. (1)使用os模块 先来看看如何查看文件属性 package main import ( "fmt" "os&quo ...
- Redis一主二从Sentinel监控配置
本文基于Redis单实例安装安装.https://gper.club/articles/7e7e7f7ff7g5egc4g6b 开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Le ...
- 文件操作之stat()函数
作用: 返回一个文件的详细信息 头文件: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h& ...
- python安装脚本
[root@dn3 hadoop]# cat install.py #!/usr/bin/python #coding=utf- import os import sys : pass else: p ...
- P1311 选择客栈[模拟]
题目描述 丽江河边有nn家很有特色的客栈,客栈按照其位置顺序从 11到nn编号.每家客栈都按照某一种色调进行装饰(总共 kk 种,用整数 00 ~k-1k−1 表示),且每家客栈都设有一家咖啡店,每家 ...
- 《The One!团队》第八次作业:ALPHA冲刺(一)
项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) 第一天 ...
- http之browser抓包
Chrome 抓包 详解谷歌Network 面板 快捷键:Control+Shift+I (Windows) or Command+Option+I (Mac) 控制器 补充知识: HAR Chrom ...
- ES基本搜索(1)
1.空搜索 GET <写路径>/_search 返回的结果: eg: GET propdict/doc/_search { , "timed_out": false, ...
- java.util.Properties 读取配置文件中的参数
用法 getProperty方法的返回值是String类型. java.util.Properties 读取配置文件中的参数 //读取配置文件 FileInputStream inStream = n ...