前言:

基于OpenCV的基本使用,对图像的数据量进行数据增强,使得框架对神经网络进行训练,提高模型的鲁棒性以及准确性。

原图:

opencv 增强对比度 函数 opencv数据增强_opencv 增强对比度 函数

1、平移

平移通过自定义平移矩阵以及函数warpAffine实现:
代码示范:

import numpy as np
import cv2

img=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)

效果图:

opencv 增强对比度 函数 opencv数据增强_OpenCV_02

2、镜像

翻转通过函数flip实现:
函数说明:

cv2.flip(src, flipCode, dst) → dst

参数说明:
src – 输入的图像
dst – 输出的图像
flipCode – 翻转模式:①flipCode==0垂直翻转(沿X轴翻转);②flipCode>0水平翻转(沿Y轴翻转);③flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)

代码示范:

import cv2

img=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)

opencv 增强对比度 函数 opencv数据增强_Code_03

3、缩放

缩放通过**cv2.resize()**实现

函数说明:

cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)

参数说明:

scr:原图

dsize:输出图像尺寸

fx:沿水平轴的比例因子

fy:沿垂直轴的比例因子

interpolation:插值方法

代码示范:

import cv2

img=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)

效果图:

opencv 增强对比度 函数 opencv数据增强_参数说明_04

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 cv2

img=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)

效果图:

opencv 增强对比度 函数 opencv数据增强_参数说明_05

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 增强对比度 函数 opencv数据增强_OpenCV_06