初识OpenCV-Python - 006: 图像的几何变换
本次小节学习了图像的变换,主要应用到如下方法: cv2.resize(), cv2.warpAffine(), cv2.getRotationMatrix2D(), cv2.getAffineTransform(), cv2.getPerspectiveTransform(), cv2.warpPerspective().
#scale
img = cv2.imread('woman.jpg')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''
cv2.resize(inputArray src, OutputArray dst, Size, fx, fy, interpolation)
InputArray src: 输入图片
OutputArray dst: 输出图片
Size: 输出图片尺寸
fx, fy: 沿x轴,y轴的缩放系数
interpolation: 插入方式
interpolation 的值为:
INTER_NEAREST: 最近邻插值
INTER_LINEAR: 双线性插值
INTER_AREA: 使用像素区域关系进行重采样
INTER_CUBIC: 4*4像素邻域的双三次插值
INTER_LANCZOS4: 8*8像素邻域的Lanczos插值
'''
res = cv2.resize(img, None, fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
cv2.imshow('dst',res)
cv2.waitKey(0)
cv2.destroyAllWindows()
#OR
height, width=img.shape[:2]
res = cv2.resize(img, (2*width,2*height),interpolation=cv2.INTER_CUBIC)
cv2.imshow('dst1',res)
cv2.waitKey(0)
cv2.destroyAllWindows()
#Tranlation or Rotation
img = cv2.imread('ball.png',0)
rows, cols = img.shape
M = np.float32([[1,0,100],[0,1,50]])
'''
cv2.getRotationMatrix2D(Point2f center, double angle, double scale):图像旋转
Point2f center: 表示旋转的中心点
double angle: 表示旋转的角度
double scale:图像缩放的因子
'''
#M = cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
'''
cv2.warpAffine(src, M, dsize[,dst[,flags[,borderModel[, borderValue]]]]
src: 输入图像
M: 变换矩阵[仿射变化矩阵,一般反应平移或旋转的关系,为2*3变换矩阵]
dsize: 输出图像的大小
flags: 插值方法的组合[值与上述的interpolation一样]
borderModel: 边界像素模式
borderValue: 边界填充值。默认0
'''
dst = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
#透视
img = cv2.imread('man.jpg')
rows, cols, ch = img.shape
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
'''
getPerspectiveTransform(const CvPoint2D32f *src, const CvPoint2D32f *dst, CvMat *map_matrix)[由四对点计算透视变换]
src: 输入图像的四边形顶点坐标
dst: 输出图像的相应的四边形顶点坐标
map_matrix: 指向3*3输出矩阵的指针
'''
M = cv2.getPerspectiveTransform(pts1,pts2)
'''
warpPerspective(const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, CvScalar fillval=cvScalarAll(0)):对图像进行透视变换
src: 输入图像
dst: 输出图像
map_matrix: 3*3变换矩阵
flags:插值方法[CV_WARP_FILL_OUTLIERS:填充所有缩小图像的像素。
CV_WARP_INVERSE_MAP:指定matrix是输出图像到输入图像的反变换。
fillval用于填充边界外的值]
'''
dst = cv2.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()
初识OpenCV-Python - 006: 图像的几何变换的更多相关文章
- 【opencv基础】图像的几何变换
参考 1. 图像的几何变换-平移和镜像: 2.图像的几何变换-缩放和旋转: 3. opencv图像旋转实现: 完
- openCV—Python(5)—— 图像几何变换
一.函数简单介绍 1.warpAffine-图像放射变换(平移.旋转.缩放) 函数原型:warpAffine(src, M, dsize, dst=None, flags=None, borderMo ...
- Opencv python图像处理-图像相似度计算
一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你 ...
- opencv python:图像直方图 histogram
直接用matplotlib画出直方图 def plot_demo(image): plt.hist(image.ravel(), 256, [0, 256]) # image.ravel()将图像展开 ...
- opencv python:图像梯度
一阶导数与Soble算子 二阶导数与拉普拉斯算子 图像边缘: Soble算子: 二阶导数: 拉普拉斯算子: import cv2 as cv import numpy as np # 图像梯度(由x, ...
- opencv python:图像金字塔
图像金字塔原理 expand = 扩大+卷积 拉普拉斯金字塔 PyrDown:降采样 PyrUp:还原 example import cv2 as cv import numpy as np # 图像 ...
- opencv python:图像二值化
import cv2 as cv import numpy as np import matplotlib.pyplot as plt # 二值图像就是将灰度图转化成黑白图,没有灰,在一个值之前为黑, ...
- opencv+python实现图像锐化
突然发现网上都是些太繁琐的方法,我就找opencv锐化函数咋这么墨迹. 直接上代码: kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], ...
- 【图像处理】OpenCV+Python图像处理入门教程(四)几何变换
这篇随笔介绍使用OpenCV进行图像处理的第四章 几何变换. 4 几何变换 图像的几何变换是指将一幅图像映射到另一幅图像内.有缩放.翻转.仿射变换.透视.重映射等操作. 4.1 缩放 使用cv2. ...
随机推荐
- Delphi之TPersistent类 -----ASSIGN
Delphi之TPersistent类 TPersistent类 TPersistent类是由TObject直接派生的.凡是由TPersistent派生的对象都能够进行流操作.因为所有的组件都是由TP ...
- 判断访问浏览器客户端类型(pc,mac,ipad,iphone,android)
<script type="text/javascript"> //平台.设备和操作系统 var system = { win: false, mac: false, ...
- mysql利用st_distance函数查询附近的点的功能
随着近几年各类移动终端的迅速普及,在手机移动定位app中,附近的人,附近的地点功能十分常见,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理 ...
- 阿里云HBase推出全新X-Pack服务 定义HBase云服务新标准
2018年12月13日,第八届中国云计算标准和应用大会在京召开,会上阿里云HBase宣布推出全新X-Pack服务,支持SQL.时序.时空.图.全文检索能力.复杂分析,从处理到分析全栈式数据库,客户开箱 ...
- 后缀自动机求字典序第k小的串——p3975
又领悟到了一点新的东西,后缀自动机其实可以分为两个数据结构,一个是后缀树,还有一个是自动机 后缀树用来划分endpos集合,并且维护后缀之间的关系,此时每个结点代表的是一些后缀相同且长度连续的子串 自 ...
- Nutz框架的优点
轻量级 -- jar文件共约1Mb -- 针对JDBC的薄封装,无缓存. 全面 -- 提供了Dao(ORM, SQL管理),Ioc, Aop, Mvc, Json解析等必要功能. 灵活 -- 各个部分 ...
- code rain???
Everybody loves the visual effect of the falling binary code known as ” Rain ” in The Matrix. In thi ...
- 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll已解决
问题 : 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll 解决 1, 首先把C:\Windows\SysWOW64\的api-ms-win-crt- ...
- 【2018ACM/ICPC网络赛】徐州赛区
呃.自闭了自闭了.我才不会说我写D写到昏天黑地呢. I Characters with Hash 题目链接:https://nanti.jisuanke.com/t/31461 题意:给你一个字符串 ...
- Qt学习笔记----基础知识
一.qt的本质 qt的本质是c++的图形界面类库,本身是mvc结构.qt能火最大程度 归功于它跨平台的特性,一次编码,多次编译应用. 注意:qt由于历史原因,经历了奇趣.诺基亚.digit公司,导致q ...