【数据增强】按照十字线将图片裁剪为四部分(*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 右下
原图片不会删除!
'''

完毕!


相关文章
|
7月前
|
编解码 人工智能 测试技术
无需训练,这个新方法实现了生成图像尺寸、分辨率自由
【4月更文挑战第25天】研究人员提出FouriScale方法,解决了扩散模型在生成高分辨率图像时的结构失真问题。通过膨胀卷积和低通滤波,该方法实现不同分辨率下图像的结构和尺度一致性,无需重新训练模型。实验显示FouriScale在保持图像真实性和完整性的同时,能生成任意尺寸的高质量图像,尤其在处理高宽比图像时表现出色。尽管在极高分辨率生成上仍有局限,但为超高清图像合成技术提供了新思路。[链接: https://arxiv.org/abs/2403.12963]
76 5
|
7月前
|
算法 Shell 计算机视觉
【特效】对实时动态人脸进行马赛克及贴图马赛克处理及一些拓展
【特效】对实时动态人脸进行马赛克及贴图马赛克处理及一些拓展
160 0
|
前端开发 iOS开发
canvas生成图片模糊的解决方案
canvas生成图片模糊的解决方案
2109 1
canvas生成图片模糊的解决方案
|
机器学习/深度学习 自然语言处理 算法
浅述几种文本和图像数据增强的方法
在现实场景中,我们往往收集不到太多的数据,那么为了扩大数据集,可以采用数据增强手段来增加样本,那么平常我们应该怎么做数据增强的呢? 什么是数据增强 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。
|
机器学习/深度学习
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
|
2月前
|
计算机视觉 Python
目标检测笔记(四):自适应缩放技术Letterbox完整代码和结果展示
自适应缩放技术Letterbox通过计算缩放比例并填充灰边像素,将图片调整为所需尺寸,保持原始比例不变,广泛应用于目标检测领域。
47 1
目标检测笔记(四):自适应缩放技术Letterbox完整代码和结果展示
|
2月前
|
机器学习/深度学习 计算机视觉 Python
目标检测笔记(三):Mosaic数据增强完整代码和结果展示
本文介绍了Mosaic数据增强技术,通过将四张图片拼接成一张新图,极大丰富了目标检测的背景信息。文章提供了完整的Python代码,涵盖了如何处理检测框并调整其位置,以适应拼接后的图像。Mosaic技术不仅提高了学习效率,还在标准化BN计算时同时考虑了四张图片的数据,从而提升了模型的泛化能力。
112 1
|
5月前
|
人工智能 自然语言处理 测试技术
将图像自动文本化,图像描述质量更高、更准确了
【7月更文挑战第11天】AI研究提升图像文本化准确性:新框架IT融合多模态大模型与视觉专家,生成详细无幻觉的图像描述。通过三个阶段—全局文本化、视觉细节提取和重描述,实现更高质量的图像转文本。研究人员建立DID-Bench、D2I-Bench和LIN-Bench基准,展示描述质量显著提升。尽管有进步,仍面临幻觉、细节缺失及大规模处理挑战。[论文链接](https://arxiv.org/pdf/2406.07502v1)**
40 1
|
7月前
|
机器学习/深度学习 生物认证 API
视觉智能平台常见问题之只有一张原图设置输出图片格式如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
7月前
|
机器学习/深度学习 API 计算机视觉
视觉智能平台常见问题之获取人脸皮肤的颜色Api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。