本文链接:https://blog.csdn.net/qq_27261889/article/details/80720359

  1. # usr/bin/env python
  2. # coding: utf-
  3.  
  4. ##################### 对图像进行变换(旋转)
  5. # 2018年6月17日07::
  6. import cv2
  7. import numpy as np
  8.  
  9. # 这里说一下旋转的opencv中为旋转提供的三个要素
  10. # 旋转的中心点(center)
  11. # 旋转角度()
  12. # 旋转后进行放缩
  13. # 我们可以通过cv2.getRotationMatrix2D函数得到转换矩阵
  14.  
  15. img = cv2.imread('cat.jpg')
  16. rows,cols,_ = img.shape
  17.  
  18. matrix = cv2.getRotationMatrix2D((cols/,rows/),,)
  19. # 得到变换的矩阵,通过这个矩阵再利用warpAffine来进行变换
  20. # 第一个参数就是旋转中心,元组的形式,这里设置成相片中心
  21. # 第二个参数90,是旋转的角度
  22. # 第三个参数1,表示放缩的系数,1表示保持原图大小
  23.  
  24. img1 = cv2.warpAffine(img,matrix,(cols,rows))
  25.  
  26. cv2.imshow('img',img)
  27. cv2.imshow('img1',img1)
  28.  
  29. ##################### 对图像进行变换(三点得到一个变换矩阵)
  30. # 我们知道三点确定一个平面,我们也可以通过确定三个点的关系来得到转换矩阵
  31. # 然后再通过warpAffine来进行变换
  32.  
  33. img = cv2.imread('dog.jpg')
  34. rows,cols,_ = img.shape
  35.  
  36. points1 = np.float32([[,],[,],[,]])
  37. points2 = np.float32([[,],[,],[,]])
  38.  
  39. matrix = cv2.getAffineTransform(points1,points2)
  40.  
  41. output = cv2.warpAffine(img,matrix,(cols,rows))
  42.  
  43. cv2.imshow('input',img)
  44. cv2.imshow('output',output)
  45.  
  46. ##################### 对图像进行变换(四点得到一个变换矩阵)
  47. # 进行透视变换
  48. # 可以先用四个点来确定一个3*3的变换矩阵(cv2.getPerspectiveTransform)
  49. # 然后通过cv2.warpPerspective和上述矩阵对图像进行变换
  50.  
  51. img = cv2.imread('cat.jpg')
  52. rows,cols,_ = img.shape
  53. points1 = np.float32([[,],[,],[,],[,]])
  54. points2 = np.float32([[,],[,],[,],[,]])
  55.  
  56. matrix = cv2.getPerspectiveTransform(points1,points2)
  57. # 将四个点组成的平面转换成另四个点组成的一个平面
  58.  
  59. output = cv2.warpPerspective(img, matrix, (cols, rows))
  60. # 通过warpPerspective函数来进行变换
  61.  
  62. cv2.imshow('img',img)
  63. cv2.imshow('output',output)
  64. cv2.waitKey()
  65. cv2.destroyAllWindows()

python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective的更多相关文章

  1. 用Python计算幂的两种方法,非递归和递归法

    用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...

  2. 转:python list排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  3. python list排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法方法1 用List的内建函数list sort进行排序list sort(func=None, key=None, reverse=False)Pytho ...

  4. Python修改文件的两种方法

    目录: 一.以占用内存的方式修改文件 二.以占用硬盘的方式修改文件 引言 文件修改的方法从操作方式上大致可以分为两类,一种是以占用电脑内存的方式,将文件读取到内存中修改再存回硬盘:第二种方法是分别打开 ...

  5. 在linux环境下编译运行OpenCV程序的两种方法

    原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之 ...

  6. python更新数据库脚本两种方法

    最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新 import MySQ ...

  7. 【Python】python更新数据库脚本两种方法

    最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新   1 import ...

  8. 使用Python生成源文件的两种方法

    利用Python的字符串处理模块,开发者能够编写脚本用来生成那些格式同样的C.C++.JAVA源程序.头文件和測试文件,从而避免大量的反复工作. 本文概述两种利用Python string类生成jav ...

  9. python 取整的两种方法

    问题简介: 要把一个浮点数(float)整数部分提取出来.比如把“2.1”变成“2”的这一过程:现在我们给这个过程起一个名字叫“取整”.那么它 在python中大致可以有两种写法 写法1)类型转换: ...

随机推荐

  1. 【转】CCS5.5从硬盘读入.dat数据格式的单张图像

    首页 博客 学院 CSDN学院                            下载 论坛 APP CSDN                            问答 商城 活动 VIP会员 ...

  2. golang读写文件的几种方式

    golang中处理文件有很多种方式,下面我们来看看. (1)使用os模块 先来看看如何查看文件属性 package main import ( "fmt" "os&quo ...

  3. Redis一主二从Sentinel监控配置

    本文基于Redis单实例安装安装.https://gper.club/articles/7e7e7f7ff7g5egc4g6b 开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Le ...

  4. 文件操作之stat()函数

    作用: 返回一个文件的详细信息 头文件: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h& ...

  5. python安装脚本

    [root@dn3 hadoop]# cat install.py #!/usr/bin/python #coding=utf- import os import sys : pass else: p ...

  6. P1311 选择客栈[模拟]

    题目描述 丽江河边有nn家很有特色的客栈,客栈按照其位置顺序从 11到nn编号.每家客栈都按照某一种色调进行装饰(总共 kk 种,用整数 00 ~k-1k−1 表示),且每家客栈都设有一家咖啡店,每家 ...

  7. 《The One!团队》第八次作业:ALPHA冲刺(一)

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) 第一天 ...

  8. http之browser抓包

    Chrome 抓包 详解谷歌Network 面板 快捷键:Control+Shift+I (Windows) or Command+Option+I (Mac) 控制器 补充知识: HAR Chrom ...

  9. ES基本搜索(1)

    1.空搜索 GET  <写路径>/_search 返回的结果: eg: GET propdict/doc/_search { , "timed_out": false, ...

  10. java.util.Properties 读取配置文件中的参数

    用法 getProperty方法的返回值是String类型. java.util.Properties 读取配置文件中的参数 //读取配置文件 FileInputStream inStream = n ...