欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入了解Python Opencv数据增强

程序员文章站 2023-01-04 11:56:14
常见的数据增强操作有:按比例放大或缩小图片、旋转、平移、水平翻转、改变图像通道等。1.按比例放大和缩小​ 扩展缩放只是改变图像的尺寸大小。opencv 提供的函数 cv2.resize()可以实现这个...

常见的数据增强操作有:按比例放大或缩小图片、旋转、平移、水平翻转、改变图像通道等。

1.按比例放大和缩小

​ 扩展缩放只是改变图像的尺寸大小。opencv 提供的函数 cv2.resize()可以实现这个功能。图像的尺寸可以自己手动设置,也可以指定缩放因子。可以选择使用不同的插值方法。在缩放时我们推荐使用 cv2.inter_area,在扩展时我们推荐使用 v2.inter_cubic(慢) 和 v2.inter_linear。默认情况下所有改变图像尺寸大小的操作使用的插值方法都是 cv2.inter_linear。

resize库中第二个参数是目标大小,例如如果我想把图片resize成300*300大小的,可以这么写:

2.平移图像

平移就是将对象换一个位置。如果你要沿(x,y)方向移动,移动的距离是(tx,ty),你可以以下面的方式构建移动矩阵:

深入了解Python Opencv数据增强

可以使用 numpy 数组构建这个矩阵(数据类型是 np.float32),然后把它传给函数cv2.warpaffine()。

例如上面是的矩阵是将图像往水平方向上移动20个像素点,竖直方向上移动30个像素点。

实例:

我这里封装的tx和ty分别为水平和竖直方向需要移动的像素点数。

3.旋转图像

opencv 提供了一个函数:cv2.getrotationmatrix2d

4.镜像变换

opencv提供了cv2.flip()函数,可以第二个参数为1时为水平翻转,为0时垂直翻转。为了后面调用方便,我还是自己封装了一下。

5.添加椒盐噪声

椒盐噪声为纯黑或纯白的像素点,随机生成。

6.添加高斯噪声

与椒盐噪声不同,高斯噪声是彩色的,方差越大时噪声越大。

7.模糊化

将图片模糊或平滑有多种算法,例如高斯模糊、中值模糊、均值模糊等,我这里使用一个比较普通的cv2.blur()实现。同样也是先封装方便我后面调用。

这里的scale其实就是滤波器的尺寸,一般取奇数,scale越大越模糊,

8.重新组合颜色通道

在opencv中,图像的通道顺序为bgr,也就是蓝绿红,可以改变成其他顺序以得到不同的效果。

实例

我有以下几张测试图片:

深入了解Python Opencv数据增强

我希望随机地对这些图片进行一些变换,最终执行结果如下:

深入了解Python Opencv数据增强

可以看到程序对我的图片随机进行了各种变换,我这里只是一次变换,读者也可以尝试对图片同时进行多种变换。

本次程序如下:

总结

还有其他很多的数据增强操作,例如随机裁剪图像、添加颜色扰动等等。另外也有其他库可以进行这些操作,例如keras中的图片预处理process库。我这种是离线式的,希望能将变换后的图片保存下来。

以上就是深入了解python opencv数据增强的详细内容,更多关于python opencv数据增强的资料请关注其它相关文章!