openCV—Python(5)—— 图像几何变换
一、函数简单介绍
1、warpAffine—图像放射变换(平移、旋转、缩放)
函数原型:warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None)
src:原图像矩阵;
M:变换矩阵;
dszie:图像尺寸(大小)
其他參数默认就可以。
2、flip—图像翻转
函数原型:flip(src, flipCode, dst=None)
sre:原图像矩阵。
flipCode:翻转方向:1:水平翻转;0:垂直翻转;-1:水平垂直翻转
dst:默认就可以
二、实例演练
1、读取一幅图像:
1)向x轴正方向平移25个像素。
2)向y轴正方向平移50个像素;
2、读取一幅图像:
1)向x轴负方向平移50个像素;
2)向y轴负方向平移90个像素。
代码例如以下:
#encoding:utf-8
import numpy as np
import cv2
image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
M = np.float32([[1,0,25],[0,1,50]])#平移矩阵1:向x正方向平移25,向y正方向平移50
shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
cv2.imshow("Shifted Down and Right",shifted)
cv2.waitKey(0)
M = np.float32([[1,0,-50],[0,1,-90]])#平移矩阵2:向x负方向平移-50,向y负方向平移-90
shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
cv2.imshow("Shifted Up and Left",shifted)
cv2.waitKey(0)
结果例如以下:
1、原图像
2、x-25,y-50
3、x-50,y-90
3、读取一幅图像:
1)旋转45度,缩放0.75;
4、读取一幅图像:
1)旋转-45度,缩放1.25;
代码例如以下:
#encoding:utf-8
import numpy as np
import cv2
image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)
(h,w) = image.shape[:2]
center = (w / 2,h / 2)
#旋转45度,缩放0.75
M = cv2.getRotationMatrix2D(center,45,0.75)#旋转缩放矩阵:(旋转中心,旋转角度,缩放因子)
rotated = cv2.warpAffine(image,M,(w,h))
cv2.imshow("Rotated by 45 Degrees",rotated)
cv2.waitKey(0)
#旋转-45度。缩放1.25
M = cv2.getRotationMatrix2D(center,-45,1.25)#旋转缩放矩阵:(旋转中心。旋转角度,缩放因子)
rotated = cv2.warpAffine(image,M,(w,h))
cv2.imshow("Rotated by -90 Degrees",rotated)
cv2.waitKey(0)
结果例如以下:
1、原图像
2、theta-45,0.75
3、theta- -45,1.25
5、读取一幅图像:
1)水平翻转。
2)垂直翻转;
3)水平垂直翻转;
代码例如以下:
#encoding:utf-8
import cv2
#
#图像翻转
#
image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)
#图像水平翻转
flipped = cv2.flip(image,1)
cv2.imshow("Flipped Horizontally", flipped)
cv2.waitKey(0)
#图像垂直翻转
flipped = cv2.flip(image,0)
cv2.imshow("Flipped Vertically", flipped)
cv2.waitKey(0)
#图像水平垂直翻转
flipped = cv2.flip(image,-1)
cv2.imshow("Flipped Horizontally & Vertically", flipped)
cv2.waitKey(0)
结果例如以下:
1、原图像
2、水平翻转
3、垂直翻转
4、水平垂直翻转
openCV—Python(5)—— 图像几何变换的更多相关文章
- Numpy和OpenCV中的图像几何变换
介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一 ...
- 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] 图像几何变换:旋转,缩放,斜切
几何变换 几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动. 几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定 ...
- OpenCV Python教程(3、直方图的计算与显示)
转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了. ...
随机推荐
- 增加nginx虚拟主机配置文件(conf.d)
有时候我们按照了nginx后发现配置文件只有一个,/etc/nginx/nginx.conf 所有的配置包括虚拟目录也在此文件中配置, 这样当虚拟主机多了管理就有些不方便了, 这是需要我们把配置文件拆 ...
- 【转】在 XAML 的属性中,转义大括号 {}
我们知道大括号"{}"在XAML中是用来处理标记扩展的. 比如: <Button Content="{Binding}"/> 但如何转义而表示普 ...
- Android自己定义ViewGroup(二)——带悬停标题的ExpandableListView
项目里要加一个点击可收缩展开的列表,要求带悬停标题,详细效果例如以下图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fon ...
- 求最大连续和——dp
输入一组整数,求出这组数字子序列和中最大值.也就是仅仅要求出最大子序列的和,不必求出最大的那个序列. 比如: 序列:-2 11 -4 13 -5 -2,则最大子序列和为20. 序列:-6 2 4 -7 ...
- 启动 angular-phonecat 项目时出现这玩意 。('The header content contains invalid characters');
最近学习angular, 跟着视频做一个动作,启动 “ angular-phonecat ” 这个项目 敲入 “npm start ” 启动没有问题,但是 "http://localhost ...
- 有用的 JS 和 CSS 库
1. Moon Moon 是一个灵感源于 Vue.js 的 JavaScript UI 库,但它却更轻量.简单.它具备优化的虚拟 DOM 引擎,对用户友好的 API,并且在 gzip 压缩后仅有 6K ...
- vue-cli项目配置图解
配置vue项目机构步骤1.搭建环境:node.npm2.安装vue脚手架工具:npm install -g vue-cli3.初始化项目:vue init webpack vuedemo(“vuede ...
- Android异步载入学习笔记之四:利用缓存优化网络载入图片及ListView载入优化
假设不做不论什么处理.直接用网络载入图片在网速快的情况下可能没什么不好的感觉.可是假设使用移动流量或是网络不好的时候.问题就来了,要么用户会抱怨流量使用太多.要么抱怨图片载入太慢.如论从哪个角度出发, ...
- 技术范儿的 Keep 发力AI赛道,为什么“虚拟教练”会更懂你?
http://www.tmtpost.com/3363367.html 摘要: 虚拟教练技术会整合到一些业务场景和硬件产品中收费,但是收费的具体情况彭跃辉还暂未透露. 图片来源于Unsplash 自去 ...
- hi模板文件报乱码问题
1.h5模板在: Templates\common 2.出现乱码的都在Templates\common\tags 局部视图里. 3.页面顶部有引用(skin-Common_SubmmitCartPr ...