【数据增强】按照十字线将图片裁剪为四部分(*4)

简介: 【数据增强】按照十字线将图片裁剪为四部分(*4)

前言


       参加了”智蔗见智·向新而生”广西第二届人工智能大赛,发现数据中存在大量的脏数据,但是如果全部裁减掉那么十分可惜,那该如何是好呢?我的解决办法是:将图片划分为多个尺寸较小的子图片,最后删掉带有缺失块的子图片,所以本文真是记录这样一种办法去将一个 长宽相等 的图片,裁剪为四个 长宽相等 的子图片。


对以旋转图片以增强数据集实例如下(两者配合可以提高数据集到原来的(4*4=16)十六倍):

image.png


效果展示:


切割之前的图片:


1dc618a0ed9580ce8bfa6facb208c08f.png


切割之后的图片:


5d4c6812c8535adbb050f4ddf2e1bce8.png


代码


'''


参数说明:


----------------------------avg_cut_four_square----------------------------


@param:square_img_path:


因为默认PIL库读取,所以选择以输入图片的路径作为参数。


@param:square_img_name:


输入图片名称,方便之后为裁剪的四个子图命名-如part1+square_img_name


@param:save_path:


裁剪后四个子图保存目录,假如我要保存在output这个目录之中去,那么我需要设置save_path='output',如果不设置那么默认保存在工作区。


----------------------------avg_cut_four_square_main----------------------------


@param:im_path:


需要被裁剪图片的目录。


@param:save_path:


作为avg_cut_four_square的参数,所以解释如上。


'''
import os
import cv2
from PIL import Image
def avg_cut_four_square(square_img_path, square_img_name, save_path = ''):
    img = Image.open(square_img_path)
    size = img.size
    weight = int(size[0] // 2)
    height = int(size[1] // 2)
    now_iter_id = 1
    for i in range(2):
        for j in range(2):
            box = (weight * j, height * i, weight * (j + 1), height * (i + 1))
            region = img.crop(box)
            region.save(os.path.join(save_path, 'part{}'.format(now_iter_id) + square_img_name))
            now_iter_id += 1
def avg_cut_four_square_main(im_path, save_path=''):
    im_list = os.listdir(im_path)
    for im_name in im_list:
        avg_cut_four_square(os.path.join(im_path, im_name), im_name, save_path=save_path)
# how to use?
if __name__ == '__main__':
    ori_img_path = 'VOCdevkit\VOC2007\JPEGImages'
    # 将ori_img_path目录下所有图片切割,且保存在ori目录下
    avg_cut_four_square_main(ori_img_path,save_path='ori') 
    print('ori is ok!')


1.导入包


import os
import cv2
from PIL import Image


2.将单张图片按十字架方式裁剪


def avg_cut_four_square(square_img_path, square_img_name, save_path = ''):
    img = Image.open(square_img_path)
    size = img.size
    weight = int(size[0] // 2)
    height = int(size[1] // 2)
    now_iter_id = 1
    for i in range(2):
        for j in range(2):
            box = (weight * j, height * i, weight * (j + 1), height * (i + 1))
            region = img.crop(box)
            region.save(os.path.join(save_path, 'part{}'.format(now_iter_id) + square_img_name))
            now_iter_id += 1


3.将目录下的所有图片按照十字架方式裁剪


def avg_cut_four_square_main(im_path, save_path=''):
    im_list = os.listdir(im_path)
    for im_name in im_list:
        avg_cut_four_square(os.path.join(im_path, im_name), im_name, save_path=save_path)


4.进入使用


# how to use?
'''
特别说明:
save_path:不设置默认保存切割后的图片在运行目录下
'''
if __name__ == '__main__':
    ori_img_path = 'VOCdevkit\VOC2007\JPEGImages'
    # 将ori_img_path目录下所有图片切割,且保存在ori目录下
    avg_cut_four_square_main(ori_img_path,save_path='ori') 
    print('ori is ok!')


5.图片保存说明


'''
假设:你有这样一张图片 test.png
那么裁剪后将保存为:
part1_test.png 左上
part2_test.png 右上
part3_test.png 左下
part4_test.png 右下
原图片不会删除!
'''

完毕!


相关文章
|
6天前
|
编解码 人工智能 测试技术
无需训练,这个新方法实现了生成图像尺寸、分辨率自由
【4月更文挑战第25天】研究人员提出FouriScale方法,解决了扩散模型在生成高分辨率图像时的结构失真问题。通过膨胀卷积和低通滤波,该方法实现不同分辨率下图像的结构和尺度一致性,无需重新训练模型。实验显示FouriScale在保持图像真实性和完整性的同时,能生成任意尺寸的高质量图像,尤其在处理高宽比图像时表现出色。尽管在极高分辨率生成上仍有局限,但为超高清图像合成技术提供了新思路。[链接: https://arxiv.org/abs/2403.12963]
33 5
|
6天前
|
算法 Shell 计算机视觉
【特效】对实时动态人脸进行马赛克及贴图马赛克处理及一些拓展
【特效】对实时动态人脸进行马赛克及贴图马赛克处理及一些拓展
47 0
|
机器学习/深度学习 自然语言处理 算法
浅述几种文本和图像数据增强的方法
在现实场景中,我们往往收集不到太多的数据,那么为了扩大数据集,可以采用数据增强手段来增加样本,那么平常我们应该怎么做数据增强的呢? 什么是数据增强 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。
|
机器学习/深度学习
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
|
6天前
|
机器学习/深度学习 生物认证 API
视觉智能平台常见问题之只有一张原图设置输出图片格式如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
31 0
|
9月前
|
传感器 算法 机器人
Baumer工业相机堡盟相机如何使用PixelTransformation像素转换功能(像素转换功能的使用和优点以及行业应用)(C#)
Baumer工业相机堡盟相机如何使用PixelTransformation像素转换功能(像素转换功能的使用和优点以及行业应用)(C#)
68 0
|
9月前
|
传感器 算法 机器人
Baumer工业相机堡盟相机如何使用PixelTransformation像素转换功能(像素转换功能的使用和优点以及行业应用)(C++)
Baumer工业相机堡盟相机如何使用PixelTransformation像素转换功能(像素转换功能的使用和优点以及行业应用)(C++)
44 0
|
机器学习/深度学习 编解码 定位技术
风格迁移 图像合成 图像重构 更换姿态和图像背景(使用交叉注意控制进行提示到图像编辑)GAN网络增强版
风格迁移 图像合成 图像重构 更换姿态和图像背景(使用交叉注意控制进行提示到图像编辑)GAN网络增强版
119 0
|
数据可视化 异构计算
【视觉基础篇】17 # 如何使用后期处理通道增强图像效果?
【视觉基础篇】17 # 如何使用后期处理通道增强图像效果?
70 0
【视觉基础篇】17 # 如何使用后期处理通道增强图像效果?
|
前端开发 数据库 数据安全/隐私保护
全景图像展示标注网站项目
全景图像展示标注网站项目
95 0
全景图像展示标注网站项目