基于OpenCV做图像数据增强(平移、镜像、缩放、旋转、仿射)
前言:
基于OpenCV的基本使用,对图像的数据量进行数据增强,使得框架对神经网络进行训练,提高模型的鲁棒性以及准确性。
原图:
1、平移
平移通过自定义平移矩阵以及函数warpAffine实现:
代码示范:
import numpy as np
import cv2img=cv2.imread("lena.png")
#平移矩阵[[1,0,-100],[0,1,-12]]
M=np.array([[1,0,-100],[0,1,-12]],dtype=np.float32)
img_change=cv2.warpAffine(img,M,(300,300))
cv2.imshow("test",img_change)
cv2.waitKey(0)
效果图:
2、镜像
翻转通过函数flip实现:
函数说明:
cv2.flip(src, flipCode, dst) → dst
参数说明:
src – 输入的图像
dst – 输出的图像
flipCode – 翻转模式:①flipCode==0垂直翻转(沿X轴翻转);②flipCode>0水平翻转(沿Y轴翻转);③flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)
代码示范:
import cv2img=cv2.imread("lena.png")
cv2.imshow("original",img)#水平镜像
h_flip=cv2.flip(img,1)
cv2.imshow("Flipped Horizontally",h_flip)#垂直镜像
v_flip=cv2.flip(img,0)
cv2.imshow("Flipped Vertically",v_flip)#水平垂直镜像
hv_flip=cv2.flip(img,-1)
cv2.imshow("Flipped Horizontally & Vertically",hv_flip)cv2.waitKey(0)
3、缩放
缩放通过**cv2.resize()**实现
函数说明:
cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
参数说明:
scr:原图
dsize:输出图像尺寸
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法
代码示范:
import cv2img=cv2.imread("lena.png")
cv2.imshow("original",img)height,width=img.shape[:2]
res=cv2.resize(img,(2*width,2*height))
cv2.imshow("large",res)cv2.waitKey(0)
效果图:
3、旋转
OpenCV中对图像的旋转主要是先通过getRotationMatrix2D函数得到图像的旋转矩阵,然后再通过仿射变换函数warpAffine得到旋转后的图像。
函数说明:
cv2.getRotationMatrix2D(center, angle, scale)
cv2.warpAffine(src, M, dsize,dst=None,flags=None,borderMode=None,borderValue=None)
参数说明:
getRotationMatrix2D:
center:表示旋转的中心点
angle:表示旋转的角度degrees
scale:图像缩放因子
warpAffine:
src:输入的图像
M:2 X 3 的变换矩阵.
dsize:输出的图像的size大小
dst:输出的图像
flags:输出图像的插值方法
borderMode:图像边界的处理方式
borderValue:当图像边界处理方式为BORDER_CONSTANT时的填充值
代码示范:
import cv2img=cv2.imread("lena.png")
cv2.imshow("original",img)rows,cols=img.shape[:2]
#90度旋转
M=cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
dst=cv2.warpAffine(img,M,(cols,rows))
cv2.imshow("90",dst)
cv2.waitKey(0)
效果图:
4、仿射
OpenCV中对图像的旋转主要是先通过getAffineTransform函数得到图像的变换矩阵,然后再通过仿射变换函数warpAffine得到变换后的图像。
函数说明:
cv2.getAffineTransform(scr,dst)
代码示范:
import numpy as np
import cv2#对图像进行变换(三点得到一个变换矩阵)
# 我们知道三点确定一个平面,我们也可以通过确定三个点的关系来得到转换矩阵
# 然后再通过warpAffine来进行变换
img=cv2.imread("lena.png")
cv2.imshow("original",img)rows,cols=img.shape[:2]point1=np.float32([[50,50],[300a,50],[50,200]])
point2=np.float32([[10,100],[300,50],[100,250]])M=cv2.getAffineTransform(point1,point2)
dst=cv2.warpAffine(img,M,(cols,rows),borderValue=(255,255,255))cv2.imshow("1",dst)
cv2.waitKey(0)
效果图:
基于OpenCV做图像数据增强(平移、镜像、缩放、旋转、仿射)相关推荐
- AugGAN:基于GAN的图像数据增强
数据增强方法无疑是需要重点研究的基本任务之一,因为我们的主流深度学习算法还是一个有监督过程.台湾国立清华大学在ECCV2018发表了一篇AugGAN开始把GAN用在数据增强方面了,当然,这并不是这个领 ...
- opencv之图像翻转、平移、缩放、旋转、仿射学习笔记
opencv版本:opencv3.4.1 目录 1. 图像翻转(坐标映射) 2. 平移 3. 缩放 4. 旋转 1. 图像翻转(坐标映射) int main() {cv::Mat srcImage ...
- 干货 | 图像数据增强实战
我目前正在做图像数据增强的深度和有效性的研究.这项研究的目的是学习怎样增加只有有限或少量数据的数据集大小,增强训练的卷积网络模型的鲁棒性. 需要列出所有可以想到的图像增强的方法,并将这些方法进行组合, ...
- 4.3【图像镜像】-------------基于Opencv实现-----图像的镜像变换
[1]理论知识: 镜像变换又分为水平镜像和垂直镜像,水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行兑换,而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中 ...
- 基于OpenCV实现图像平移
[1]理论知识 图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动 [2]完整代码 /*--------------------------------------------------- ...
- 【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
- python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
- 基于OpenCV实现------图像的转置
[1]理论基础 图像转置是将图像的x坐标和y坐标互换,图像的大小会随之改变----------即高度和宽度将互换. [2]图像转置的变换公式 因为转置矩阵的逆矩阵仍然是其本身,故转置变换的逆变换具有相 ...
- 图像数据增强方法一览(附python代码)
在图像分类任务中,图像数据增强一般是大多数人会采用的方法之一,这是由于深度学习对数据集的大小有一定的要求,若原始的数据集比较小,无法很好地满足网络模型的训练,从而影响模型的性能,而图像增强是对原始图像 ...
最新文章
- rhel5.5下安装awstats实现网站流量监控
- c#语言基础编程-转义符
- 大学生动漫网页设计模板 机动战士高达静态网页制作成品下载 HTML漫画网页作业带JS轮播图
- vue项目中跨域问题的解决
- 超平面是什么?——理解超平面(SVM开篇之超平面详解)
- 网站跳出率过高的原因有哪些?怎么解决?
- C语言实现FTP客户端(已编译,亲试可用~)
- excel怎么设置打印区域_Excel如何设置打印区域及打印区域如何调整
- 数仓建设 | ODS、DWD、DWM等理论实战(好文收藏)
- 计算机高级工程师如何评正高,如何评高级职称
- 江苏限额申报|2022年省级企业工程技术研究中心项目申报
- 【机器学习】李宏毅——Flow-based Generative Models
- 如何使用React创建视频和动画
- 后台和小程序实现卡片式轮播图
- 朗润国际期货招商:桥水基金四季度投资组合
- 发布 听打速录测试智能评分软件个人版
- 计算机游戏快速退出的快捷键,结束进程快捷键,小编教你电脑结束进程快捷键怎么操作...
- 【仿真】Carla之Docker 运行 及 渲染相关 [6]
- linux Centos系统下django项目在Nginx服务器上的部署
- php微商城微信支付教程,ECSHOP微信商城后台操作使用教程【ECSHOP微信支付设置】ECSHOP微信插件安装方法-ECSHOP教程网...
热门文章
- 画论27 宋徽宗敕纂《宣和画谱》
- Flask报错及其相关解决方法汇总
- 10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字。 编写一个程序, 尝试读取这些文件, 并将其内容打印到
- shopee跨境店铺怎么申请入驻-跨境知道
- OpenStack 归档 - 虚拟机临时存储与块存储
- Microsoft.Office.Interop.Word 创建word
- Java项目:基于ssm汽车配件管理系统(计算机毕业设计)
- 在线 - 支持word上传的富文本编辑器
- B站怎么就成为了教育类的视频网站了
- Python带*参数和带**参数:可变参数